First Results: Skill Building and Self-Acceptance as Mechanisms of Positive Personality Change

Author

Michael Krämer

1 Load packages

Show the code
library(renv)
library(tidyverse)
library(broom)
library(labelled)
library(psych)
library(GPArotation)
#library(devtools)
#install_github("cran/multicon") # not on CRAN atm
library(multicon)
library(correlation)
library(corrplot)
library(lavaan)
library(semTools)
library(semPlot)
library(knitr)
library(ggdist)
library(ggforce)
library(nortest)

2 Data cleaning

Show the code
source("clean_data.R")

3 Confirmatory results

3.1 Hypothesis 1: Well-being - similarity correlations

All four psychological well-being indicators will be positively correlated with a greater similarity between current- and ideal self-ratings of personality.

To examine this at the level of overall profiles, we will compute the correlations between the psychological well-being indicators and the Fisher z transformed correlations between the facet- and item-level real-ideal self-profiles. To examine this at the level of individual traits, we will compute the correlation between psychological well-being indicators and the squared difference between current- and ideal-self rating for each Big Five trait and facet.

3.1.1 Profile similarity

Computations:

Show the code
cormat_profile <- cor(df_sbsa[, c("swls", "meaning", "selfes", "concept",
                                  "profile_corr_item_z", "profile_corr_facet_z")], use = "pairwise.complete.obs")

rownames(cormat_profile) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                              "Item-Level Profile Corr (z)", "Facet-Level Profile Corr (z)")
colnames(cormat_profile) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                              "Item-Level Profile Corr (z)", "Facet-Level Profile Corr (z)")
corrplot(cormat_profile, type = "lower", order = "original", tl.col = "black", tl.srt = 10,
                      addCoef.col ='black', number.cex = 0.7, diag = FALSE) # also add numbers

Positive correlations of well-being indicators with profile similarity between current self and ideal self personality. Especially high correlation with self-esteem. High congruence of item-level and facet-level profile similarity.

3.1.2 Individual traits: squared differences

Computations:

Show the code
cormat_sqtraits <- cor(df_sbsa[, c("swls", "meaning", "selfes", "concept",
                                   paste0(str_trunc(names(b5_vars)[1:5], 5, ellipsis = ""), "_sqdiff"))], 
                       use = "pairwise.complete.obs")

rownames(cormat_sqtraits) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                               str_to_title(names(b5_vars)[1:5]))
colnames(cormat_sqtraits) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                               str_to_title(names(b5_vars)[1:5]))

cormat_sqfacets <- cor(df_sbsa[, c("swls", "meaning", "selfes", "concept",
                                   paste0(str_trunc(names(b5_vars)[6:20], 5, ellipsis = ""), "_sqdiff"))], 
                       use = "pairwise.complete.obs")

rownames(cormat_sqfacets) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                               str_to_title(names(b5_vars)[6:20]))
colnames(cormat_sqfacets) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                               str_to_title(names(b5_vars)[6:20]))

Big Five traits

corrplot(cormat_sqtraits, type = "lower", order = "original", tl.col = "black", tl.srt = 10,
         addCoef.col ='black', number.cex = 0.7, diag = FALSE) # also add numbers

Big Five facets

corrplot(cormat_sqfacets, type = "lower", order = "original", tl.col = "black", tl.srt = 10,
         addCoef.col ='black', number.cex = 0.6, diag = FALSE) # also add numbers

Here we see negative correlations of well-being indicators with squared trait- and facet-level mean-score differences between current self and ideal self personality.


3.2 Measurement invariance: Well-being indicators

Testing for measurement invariance of the latent traits across time.

Reshape well-being data:

Show the code
df_sbsa_wide_wb <- df_sbsa %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("sw06", "ml01", "rs01", "sc01"))) %>% 
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = starts_with(c("sw06", "ml01", "rs01", "sc01")))
colnames(df_sbsa_wide_wb)

3.2.1 Life satisfaction

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_swls <- '
# Define the latent factors
swls1 =~ NA*sw06_01_t1 + lambda1*sw06_01_t1 + sw06_02_t1 + sw06_03_t1 + sw06_04_t1 + sw06_05_t1 
swls2 =~ NA*sw06_01_t2 + lambda1*sw06_01_t2 + sw06_02_t2 + sw06_03_t2 + sw06_04_t2 + sw06_05_t2

# Intercepts
sw06_01_t1 ~ i1*1
sw06_02_t1 ~ 1
sw06_03_t1 ~ 1
sw06_04_t1 ~ 1
sw06_05_t1 ~ 1

sw06_01_t2 ~ i1*1
sw06_02_t2 ~ 1
sw06_03_t2 ~ 1
sw06_04_t2 ~ 1
sw06_05_t2 ~ 1

# Unique Variances
sw06_01_t1 ~~ sw06_01_t1
sw06_02_t1 ~~ sw06_02_t1
sw06_03_t1 ~~ sw06_03_t1
sw06_04_t1 ~~ sw06_04_t1
sw06_05_t1 ~~ sw06_05_t1

sw06_01_t2 ~~ sw06_01_t2
sw06_02_t2 ~~ sw06_02_t2
sw06_03_t2 ~~ sw06_03_t2
sw06_04_t2 ~~ sw06_04_t2
sw06_05_t2 ~~ sw06_05_t2

# Latent Variable Means
swls1 ~ 0*1
swls2 ~ 1

# Latent Variable Variances and Covariance
swls1 ~~ 1*swls1
swls2 ~~ swls2
swls1 ~~ swls2
'
fit_configural_swls <- cfa(configural_swls, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_configural_swls, fit.measures = TRUE)

# Weak invariance model
weak_swls <- '
# Define the latent factors
swls1 =~ NA*sw06_01_t1 + lambda1*sw06_01_t1 + lambda2*sw06_02_t1 + lambda3*sw06_03_t1 + lambda4*sw06_04_t1 + lambda5*sw06_05_t1 
swls2 =~ NA*sw06_01_t2 + lambda1*sw06_01_t2 + lambda2*sw06_02_t2 + lambda3*sw06_03_t2 + lambda4*sw06_04_t2 + lambda5*sw06_05_t2

# Intercepts
sw06_01_t1 ~ i1*1
sw06_02_t1 ~ 1
sw06_03_t1 ~ 1
sw06_04_t1 ~ 1
sw06_05_t1 ~ 1

sw06_01_t2 ~ i1*1
sw06_02_t2 ~ 1
sw06_03_t2 ~ 1
sw06_04_t2 ~ 1
sw06_05_t2 ~ 1

# Unique Variances
sw06_01_t1 ~~ sw06_01_t1
sw06_02_t1 ~~ sw06_02_t1
sw06_03_t1 ~~ sw06_03_t1
sw06_04_t1 ~~ sw06_04_t1
sw06_05_t1 ~~ sw06_05_t1

sw06_01_t2 ~~ sw06_01_t2
sw06_02_t2 ~~ sw06_02_t2
sw06_03_t2 ~~ sw06_03_t2
sw06_04_t2 ~~ sw06_04_t2
sw06_05_t2 ~~ sw06_05_t2

# Latent Variable Means
swls1 ~ 0*1
swls2 ~ 1

# Latent Variable Variances and Covariance
swls1 ~~ 1*swls1
swls2 ~~ swls2
swls1 ~~ swls2
'
fit_weak_swls <- cfa(weak_swls, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_weak_swls, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_swls <- '
# Define the latent factors
swls1 =~ NA*sw06_01_t1 + lambda1*sw06_01_t1 + lambda2*sw06_02_t1 + lambda3*sw06_03_t1 + lambda4*sw06_04_t1 + lambda5*sw06_05_t1 
swls2 =~ NA*sw06_01_t2 + lambda1*sw06_01_t2 + lambda2*sw06_02_t2 + lambda3*sw06_03_t2 + lambda4*sw06_04_t2 + lambda5*sw06_05_t2

# Intercepts
sw06_01_t1 ~ i1*1
sw06_02_t1 ~ i2*1
sw06_03_t1 ~ i3*1
sw06_04_t1 ~ i4*1
sw06_05_t1 ~ i5*1

sw06_01_t2 ~ i1*1
sw06_02_t2 ~ i2*1
sw06_03_t2 ~ i3*1
sw06_04_t2 ~ i4*1
sw06_05_t2 ~ i5*1

# Unique Variances
sw06_01_t1 ~~ sw06_01_t1
sw06_02_t1 ~~ sw06_02_t1
sw06_03_t1 ~~ sw06_03_t1
sw06_04_t1 ~~ sw06_04_t1
sw06_05_t1 ~~ sw06_05_t1

sw06_01_t2 ~~ sw06_01_t2
sw06_02_t2 ~~ sw06_02_t2
sw06_03_t2 ~~ sw06_03_t2
sw06_04_t2 ~~ sw06_04_t2
sw06_05_t2 ~~ sw06_05_t2

# Latent Variable Means
swls1 ~ 0*1
swls2 ~ 1

# Latent Variable Variances and Covariance
swls1 ~~ 1*swls1
swls2 ~~ swls2
swls1 ~~ swls2
'
fit_strong_swls <- cfa(strong_swls, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_strong_swls, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_swls <- '
# Define the latent factors
swls1 =~ NA*sw06_01_t1 + lambda1*sw06_01_t1 + lambda2*sw06_02_t1 + lambda3*sw06_03_t1 + lambda4*sw06_04_t1 + lambda5*sw06_05_t1 
swls2 =~ NA*sw06_01_t2 + lambda1*sw06_01_t2 + lambda2*sw06_02_t2 + lambda3*sw06_03_t2 + lambda4*sw06_04_t2 + lambda5*sw06_05_t2

# Intercepts
sw06_01_t1 ~ i1*1
sw06_02_t1 ~ i2*1
sw06_03_t1 ~ i3*1
sw06_04_t1 ~ i4*1
sw06_05_t1 ~ i5*1

sw06_01_t2 ~ i1*1
sw06_02_t2 ~ i2*1
sw06_03_t2 ~ i3*1
sw06_04_t2 ~ i4*1
sw06_05_t2 ~ i5*1

# Unique Variances
sw06_01_t1 ~~ u1*sw06_01_t1
sw06_02_t1 ~~ u2*sw06_02_t1
sw06_03_t1 ~~ u3*sw06_03_t1
sw06_04_t1 ~~ u4*sw06_04_t1
sw06_05_t1 ~~ u5*sw06_05_t1

sw06_01_t2 ~~ u1*sw06_01_t2
sw06_02_t2 ~~ u2*sw06_02_t2
sw06_03_t2 ~~ u3*sw06_03_t2
sw06_04_t2 ~~ u4*sw06_04_t2
sw06_05_t2 ~~ u5*sw06_05_t2

# Latent Variable Means
swls1 ~ 0*1
swls2 ~ 1

# Latent Variable Variances and Covariance
swls1 ~~ 1*swls1
swls2 ~~ swls2
swls1 ~~ swls2
'
fit_strict_swls <- cfa(strict_swls, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_strict_swls, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_swls) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_swls) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_swls) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_swls) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   624    31  455. 16535. 16673. 0.887 0.850 0.141 0.0528
2 weak         624    27  455. 16528. 16648. 0.888 0.867 0.133 0.0529
3 strong       624    23  457. 16522. 16624. 0.888 0.880 0.126 0.0531
4 strict       624    18  469. 16524. 16604. 0.886 0.891 0.120 0.0544
# chi-square difference test for nested models 
anova(fit_configural_swls, fit_weak_swls)

Chi-Squared Difference Test

                    Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
fit_configural_swls 34 16535 16673 454.69                                    
fit_weak_swls       38 16528 16648 455.34    0.65113     0       4     0.9572
anova(fit_weak_swls, fit_strong_swls)

Chi-Squared Difference Test

                Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
fit_weak_swls   38 16528 16648 455.34                                    
fit_strong_swls 42 16522 16624 457.40     2.0614     0       4     0.7245
anova(fit_strong_swls, fit_strict_swls)

Chi-Squared Difference Test

                Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff Pr(>Chisq)  
fit_strong_swls 42 16522 16624 457.40                                         
fit_strict_swls 47 16524 16604 469.41     12.012 0.047407       5    0.03463 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Model fit relatively similar across model specifications. Chi^2 tests indicate that strong measurement invariance is given.

3.2.2 Meaning in life

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_meaning <- '
# Define the latent factors
meaning1 =~ NA*ml01_01_t1 + lambda1*ml01_01_t1 + ml01_02_t1 + ml01_03_t1 + ml01_04_t1 + ml01_05_t1 + ml01_06_t1 + ml01_07_t1 + ml01_08_t1 + ml01_09_t1 + ml01_10_t1
meaning2 =~ NA*ml01_01_t2 + lambda1*ml01_01_t2 + ml01_02_t2 + ml01_03_t2 + ml01_04_t2 + ml01_05_t2 + ml01_06_t2 + ml01_07_t2 + ml01_08_t2 + ml01_09_t2 + ml01_10_t2

# Intercepts
ml01_01_t1 ~ i1*1
ml01_02_t1 ~ 1
ml01_03_t1 ~ 1
ml01_04_t1 ~ 1
ml01_05_t1 ~ 1
ml01_06_t1 ~ 1
ml01_07_t1 ~ 1
ml01_08_t1 ~ 1
ml01_09_t1 ~ 1
ml01_10_t1 ~ 1

ml01_01_t2 ~ i1*1
ml01_02_t2 ~ 1
ml01_03_t2 ~ 1
ml01_04_t2 ~ 1
ml01_05_t2 ~ 1
ml01_06_t2 ~ 1
ml01_07_t2 ~ 1
ml01_08_t2 ~ 1
ml01_09_t2 ~ 1
ml01_10_t2 ~ 1

# Unique Variances
ml01_01_t1 ~~ ml01_01_t1
ml01_02_t1 ~~ ml01_02_t1
ml01_03_t1 ~~ ml01_03_t1
ml01_04_t1 ~~ ml01_04_t1
ml01_05_t1 ~~ ml01_05_t1
ml01_06_t1 ~~ ml01_06_t1
ml01_07_t1 ~~ ml01_07_t1
ml01_08_t1 ~~ ml01_08_t1
ml01_09_t1 ~~ ml01_09_t1
ml01_10_t1 ~~ ml01_10_t1

ml01_01_t2 ~~ ml01_01_t2
ml01_02_t2 ~~ ml01_02_t2
ml01_03_t2 ~~ ml01_03_t2
ml01_04_t2 ~~ ml01_04_t2
ml01_05_t2 ~~ ml01_05_t2
ml01_06_t2 ~~ ml01_06_t2
ml01_07_t2 ~~ ml01_07_t2
ml01_08_t2 ~~ ml01_08_t2
ml01_09_t2 ~~ ml01_09_t2
ml01_10_t2 ~~ ml01_10_t2

# Latent Variable Means
meaning1 ~ 0*1
meaning2 ~ 1

# Latent Variable Variances and Covariance
meaning1 ~~ 1*meaning1
meaning2 ~~ meaning2
meaning1 ~~ meaning2
'
fit_configural_meaning <- cfa(configural_meaning, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_configural_meaning, fit.measures = TRUE)

# Weak invariance model
weak_meaning <- '
# Define the latent factors
meaning1 =~ NA*ml01_01_t1 + lambda1*ml01_01_t1 + lambda2*ml01_02_t1 + lambda3*ml01_03_t1 + lambda4*ml01_04_t1 + lambda5*ml01_05_t1 + lambda6*ml01_06_t1 + lambda7*ml01_07_t1 + lambda8*ml01_08_t1 + lambda9*ml01_09_t1 + lambda10*ml01_10_t1 
meaning2 =~ NA*ml01_01_t2 + lambda1*ml01_01_t2 + lambda2*ml01_02_t2 + lambda3*ml01_03_t2 + lambda4*ml01_04_t2 + lambda5*ml01_05_t2 + lambda6*ml01_06_t2 + lambda7*ml01_07_t2 + lambda8*ml01_08_t2 + lambda9*ml01_09_t2 + lambda10*ml01_10_t2

# Intercepts
ml01_01_t1 ~ i1*1
ml01_02_t1 ~ 1
ml01_03_t1 ~ 1
ml01_04_t1 ~ 1
ml01_05_t1 ~ 1
ml01_06_t1 ~ 1
ml01_07_t1 ~ 1
ml01_08_t1 ~ 1
ml01_09_t1 ~ 1
ml01_10_t1 ~ 1

ml01_01_t2 ~ i1*1
ml01_02_t2 ~ 1
ml01_03_t2 ~ 1
ml01_04_t2 ~ 1
ml01_05_t2 ~ 1
ml01_06_t2 ~ 1
ml01_07_t2 ~ 1
ml01_08_t2 ~ 1
ml01_09_t2 ~ 1
ml01_10_t2 ~ 1

# Unique Variances
ml01_01_t1 ~~ ml01_01_t1
ml01_02_t1 ~~ ml01_02_t1
ml01_03_t1 ~~ ml01_03_t1
ml01_04_t1 ~~ ml01_04_t1
ml01_05_t1 ~~ ml01_05_t1
ml01_06_t1 ~~ ml01_06_t1
ml01_07_t1 ~~ ml01_07_t1
ml01_08_t1 ~~ ml01_08_t1
ml01_09_t1 ~~ ml01_09_t1
ml01_10_t1 ~~ ml01_10_t1

ml01_01_t2 ~~ ml01_01_t2
ml01_02_t2 ~~ ml01_02_t2
ml01_03_t2 ~~ ml01_03_t2
ml01_04_t2 ~~ ml01_04_t2
ml01_05_t2 ~~ ml01_05_t2
ml01_06_t2 ~~ ml01_06_t2
ml01_07_t2 ~~ ml01_07_t2
ml01_08_t2 ~~ ml01_08_t2
ml01_09_t2 ~~ ml01_09_t2
ml01_10_t2 ~~ ml01_10_t2

# Latent Variable Means
meaning1 ~ 0*1
meaning2 ~ 1

# Latent Variable Variances and Covariance
meaning1 ~~ 1*meaning1
meaning2 ~~ meaning2
meaning1 ~~ meaning2
'
fit_weak_meaning <- cfa(weak_meaning, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_weak_meaning, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_meaning <- '
# Define the latent factors
meaning1 =~ NA*ml01_01_t1 + lambda1*ml01_01_t1 + lambda2*ml01_02_t1 + lambda3*ml01_03_t1 + lambda4*ml01_04_t1 + lambda5*ml01_05_t1 + lambda6*ml01_06_t1 + lambda7*ml01_07_t1 + lambda8*ml01_08_t1 + lambda9*ml01_09_t1 + lambda10*ml01_10_t1 
meaning2 =~ NA*ml01_01_t2 + lambda1*ml01_01_t2 + lambda2*ml01_02_t2 + lambda3*ml01_03_t2 + lambda4*ml01_04_t2 + lambda5*ml01_05_t2 + lambda6*ml01_06_t2 + lambda7*ml01_07_t2 + lambda8*ml01_08_t2 + lambda9*ml01_09_t2 + lambda10*ml01_10_t2

# Intercepts
ml01_01_t1 ~ i1*1
ml01_02_t1 ~ i2*1
ml01_03_t1 ~ i3*1
ml01_04_t1 ~ i4*1
ml01_05_t1 ~ i5*1
ml01_06_t1 ~ i6*1
ml01_07_t1 ~ i7*1
ml01_08_t1 ~ i8*1
ml01_09_t1 ~ i9*1
ml01_10_t1 ~ i10*1

ml01_01_t2 ~ i1*1
ml01_02_t2 ~ i2*1
ml01_03_t2 ~ i3*1
ml01_04_t2 ~ i4*1
ml01_05_t2 ~ i5*1
ml01_06_t2 ~ i6*1
ml01_07_t2 ~ i7*1
ml01_08_t2 ~ i8*1
ml01_09_t2 ~ i9*1
ml01_10_t2 ~ i10*1

# Unique Variances
ml01_01_t1 ~~ ml01_01_t1
ml01_02_t1 ~~ ml01_02_t1
ml01_03_t1 ~~ ml01_03_t1
ml01_04_t1 ~~ ml01_04_t1
ml01_05_t1 ~~ ml01_05_t1
ml01_06_t1 ~~ ml01_06_t1
ml01_07_t1 ~~ ml01_07_t1
ml01_08_t1 ~~ ml01_08_t1
ml01_09_t1 ~~ ml01_09_t1
ml01_10_t1 ~~ ml01_10_t1

ml01_01_t2 ~~ ml01_01_t2
ml01_02_t2 ~~ ml01_02_t2
ml01_03_t2 ~~ ml01_03_t2
ml01_04_t2 ~~ ml01_04_t2
ml01_05_t2 ~~ ml01_05_t2
ml01_06_t2 ~~ ml01_06_t2
ml01_07_t2 ~~ ml01_07_t2
ml01_08_t2 ~~ ml01_08_t2
ml01_09_t2 ~~ ml01_09_t2
ml01_10_t2 ~~ ml01_10_t2

# Latent Variable Means
meaning1 ~ 0*1
meaning2 ~ 1

# Latent Variable Variances and Covariance
meaning1 ~~ 1*meaning1
meaning2 ~~ meaning2
meaning1 ~~ meaning2
'
fit_strong_meaning <- cfa(strong_meaning, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_strong_meaning, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_meaning <- '
# Define the latent factors
meaning1 =~ NA*ml01_01_t1 + lambda1*ml01_01_t1 + lambda2*ml01_02_t1 + lambda3*ml01_03_t1 + lambda4*ml01_04_t1 + lambda5*ml01_05_t1 + lambda6*ml01_06_t1 + lambda7*ml01_07_t1 + lambda8*ml01_08_t1 + lambda9*ml01_09_t1 + lambda10*ml01_10_t1 
meaning2 =~ NA*ml01_01_t2 + lambda1*ml01_01_t2 + lambda2*ml01_02_t2 + lambda3*ml01_03_t2 + lambda4*ml01_04_t2 + lambda5*ml01_05_t2 + lambda6*ml01_06_t2 + lambda7*ml01_07_t2 + lambda8*ml01_08_t2 + lambda9*ml01_09_t2 + lambda10*ml01_10_t2

# Intercepts
ml01_01_t1 ~ i1*1
ml01_02_t1 ~ i2*1
ml01_03_t1 ~ i3*1
ml01_04_t1 ~ i4*1
ml01_05_t1 ~ i5*1
ml01_06_t1 ~ i6*1
ml01_07_t1 ~ i7*1
ml01_08_t1 ~ i8*1
ml01_09_t1 ~ i9*1
ml01_10_t1 ~ i10*1

ml01_01_t2 ~ i1*1
ml01_02_t2 ~ i2*1
ml01_03_t2 ~ i3*1
ml01_04_t2 ~ i4*1
ml01_05_t2 ~ i5*1
ml01_06_t2 ~ i6*1
ml01_07_t2 ~ i7*1
ml01_08_t2 ~ i8*1
ml01_09_t2 ~ i9*1
ml01_10_t2 ~ i10*1

# Unique Variances
ml01_01_t1 ~~ u1*ml01_01_t1
ml01_02_t1 ~~ u2*ml01_02_t1
ml01_03_t1 ~~ u3*ml01_03_t1
ml01_04_t1 ~~ u4*ml01_04_t1
ml01_05_t1 ~~ u5*ml01_05_t1
ml01_06_t1 ~~ u6*ml01_06_t1
ml01_07_t1 ~~ u7*ml01_07_t1
ml01_08_t1 ~~ u8*ml01_08_t1
ml01_09_t1 ~~ u9*ml01_09_t1
ml01_10_t1 ~~ u10*ml01_10_t1

ml01_01_t2 ~~ u1*ml01_01_t2
ml01_02_t2 ~~ u2*ml01_02_t2
ml01_03_t2 ~~ u3*ml01_03_t2
ml01_04_t2 ~~ u4*ml01_04_t2
ml01_05_t2 ~~ u5*ml01_05_t2
ml01_06_t2 ~~ u6*ml01_06_t2
ml01_07_t2 ~~ u7*ml01_07_t2
ml01_08_t2 ~~ u8*ml01_08_t2
ml01_09_t2 ~~ u9*ml01_09_t2
ml01_10_t2 ~~ u10*ml01_10_t2

# Latent Variable Means
meaning1 ~ 0*1
meaning2 ~ 1

# Latent Variable Variances and Covariance
meaning1 ~~ 1*meaning1
meaning2 ~~ meaning2
meaning1 ~~ meaning2
'
fit_strict_meaning <- cfa(strict_meaning, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_strict_meaning, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_meaning) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_meaning) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_meaning) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_meaning) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea  srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>
1 configural   624    61 4462. 42872. 43143. 0.542 0.485 0.202 0.228
2 weak         624    52 4467. 42859. 43090. 0.543 0.512 0.197 0.228
3 strong       624    43 4491. 42864. 43055. 0.541 0.534 0.192 0.228
4 strict       624    33 4529. 42883. 43029. 0.538 0.555 0.188 0.231
# chi-square difference test for nested models 
anova(fit_configural_meaning, fit_weak_meaning)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_meaning 169 42872 43143 4462.2                         
fit_weak_meaning       178 42859 43090 4467.3     5.0411     0       9
                       Pr(>Chisq)
fit_configural_meaning           
fit_weak_meaning           0.8307
anova(fit_weak_meaning, fit_strong_meaning)

Chi-Squared Difference Test

                    Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_weak_meaning   178 42859 43090 4467.3                            
fit_strong_meaning 187 42864 43055 4490.6     23.361 0.050569       9
                   Pr(>Chisq)   
fit_weak_meaning                
fit_strong_meaning   0.005434 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit_strong_meaning, fit_strict_meaning)

Chi-Squared Difference Test

                    Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_meaning 187 42864 43055 4490.6                            
fit_strict_meaning 197 42883 43029 4529.0     38.401 0.067464      10
                   Pr(>Chisq)    
fit_strong_meaning               
fit_strict_meaning  3.232e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Bad model fit across all model specifications. Chi^2 tests indicate that only weak measurement invariance is given.

3.2.3 Self-esteem

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_selfes <- '
# Define the latent factors
selfes1 =~ NA*rs01_01_t1 + lambda1*rs01_01_t1 + rs01_02_t1 + rs01_03_t1 + rs01_04_t1 + rs01_05_t1 + rs01_06_t1 + rs01_07_t1 + rs01_08_t1 + rs01_09_t1 + rs01_10_t1
selfes2 =~ NA*rs01_01_t2 + lambda1*rs01_01_t2 + rs01_02_t2 + rs01_03_t2 + rs01_04_t2 + rs01_05_t2 + rs01_06_t2 + rs01_07_t2 + rs01_08_t2 + rs01_09_t2 + rs01_10_t2

# Intercepts
rs01_01_t1 ~ i1*1
rs01_02_t1 ~ 1
rs01_03_t1 ~ 1
rs01_04_t1 ~ 1
rs01_05_t1 ~ 1
rs01_06_t1 ~ 1
rs01_07_t1 ~ 1
rs01_08_t1 ~ 1
rs01_09_t1 ~ 1
rs01_10_t1 ~ 1

rs01_01_t2 ~ i1*1
rs01_02_t2 ~ 1
rs01_03_t2 ~ 1
rs01_04_t2 ~ 1
rs01_05_t2 ~ 1
rs01_06_t2 ~ 1
rs01_07_t2 ~ 1
rs01_08_t2 ~ 1
rs01_09_t2 ~ 1
rs01_10_t2 ~ 1

# Unique Variances
rs01_01_t1 ~~ rs01_01_t1
rs01_02_t1 ~~ rs01_02_t1
rs01_03_t1 ~~ rs01_03_t1
rs01_04_t1 ~~ rs01_04_t1
rs01_05_t1 ~~ rs01_05_t1
rs01_06_t1 ~~ rs01_06_t1
rs01_07_t1 ~~ rs01_07_t1
rs01_08_t1 ~~ rs01_08_t1
rs01_09_t1 ~~ rs01_09_t1
rs01_10_t1 ~~ rs01_10_t1

rs01_01_t2 ~~ rs01_01_t2
rs01_02_t2 ~~ rs01_02_t2
rs01_03_t2 ~~ rs01_03_t2
rs01_04_t2 ~~ rs01_04_t2
rs01_05_t2 ~~ rs01_05_t2
rs01_06_t2 ~~ rs01_06_t2
rs01_07_t2 ~~ rs01_07_t2
rs01_08_t2 ~~ rs01_08_t2
rs01_09_t2 ~~ rs01_09_t2
rs01_10_t2 ~~ rs01_10_t2

# Latent Variable Means
selfes1 ~ 0*1
selfes2 ~ 1

# Latent Variable Variances and Covariance
selfes1 ~~ 1*selfes1
selfes2 ~~ selfes2
selfes1 ~~ selfes2
'
fit_configural_selfes <- cfa(configural_selfes, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_configural_selfes, fit.measures = TRUE)

# Weak invariance model
weak_selfes <- '
# Define the latent factors
selfes1 =~ NA*rs01_01_t1 + lambda1*rs01_01_t1 + lambda2*rs01_02_t1 + lambda3*rs01_03_t1 + lambda4*rs01_04_t1 + lambda5*rs01_05_t1 + lambda6*rs01_06_t1 + lambda7*rs01_07_t1 + lambda8*rs01_08_t1 + lambda9*rs01_09_t1 + lambda10*rs01_10_t1 
selfes2 =~ NA*rs01_01_t2 + lambda1*rs01_01_t2 + lambda2*rs01_02_t2 + lambda3*rs01_03_t2 + lambda4*rs01_04_t2 + lambda5*rs01_05_t2 + lambda6*rs01_06_t2 + lambda7*rs01_07_t2 + lambda8*rs01_08_t2 + lambda9*rs01_09_t2 + lambda10*rs01_10_t2

# Intercepts
rs01_01_t1 ~ i1*1
rs01_02_t1 ~ 1
rs01_03_t1 ~ 1
rs01_04_t1 ~ 1
rs01_05_t1 ~ 1
rs01_06_t1 ~ 1
rs01_07_t1 ~ 1
rs01_08_t1 ~ 1
rs01_09_t1 ~ 1
rs01_10_t1 ~ 1

rs01_01_t2 ~ i1*1
rs01_02_t2 ~ 1
rs01_03_t2 ~ 1
rs01_04_t2 ~ 1
rs01_05_t2 ~ 1
rs01_06_t2 ~ 1
rs01_07_t2 ~ 1
rs01_08_t2 ~ 1
rs01_09_t2 ~ 1
rs01_10_t2 ~ 1

# Unique Variances
rs01_01_t1 ~~ rs01_01_t1
rs01_02_t1 ~~ rs01_02_t1
rs01_03_t1 ~~ rs01_03_t1
rs01_04_t1 ~~ rs01_04_t1
rs01_05_t1 ~~ rs01_05_t1
rs01_06_t1 ~~ rs01_06_t1
rs01_07_t1 ~~ rs01_07_t1
rs01_08_t1 ~~ rs01_08_t1
rs01_09_t1 ~~ rs01_09_t1
rs01_10_t1 ~~ rs01_10_t1

rs01_01_t2 ~~ rs01_01_t2
rs01_02_t2 ~~ rs01_02_t2
rs01_03_t2 ~~ rs01_03_t2
rs01_04_t2 ~~ rs01_04_t2
rs01_05_t2 ~~ rs01_05_t2
rs01_06_t2 ~~ rs01_06_t2
rs01_07_t2 ~~ rs01_07_t2
rs01_08_t2 ~~ rs01_08_t2
rs01_09_t2 ~~ rs01_09_t2
rs01_10_t2 ~~ rs01_10_t2

# Latent Variable Means
selfes1 ~ 0*1
selfes2 ~ 1

# Latent Variable Variances and Covariance
selfes1 ~~ 1*selfes1
selfes2 ~~ selfes2
selfes1 ~~ selfes2
'
fit_weak_selfes <- cfa(weak_selfes, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_weak_selfes, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_selfes <- '
# Define the latent factors
selfes1 =~ NA*rs01_01_t1 + lambda1*rs01_01_t1 + lambda2*rs01_02_t1 + lambda3*rs01_03_t1 + lambda4*rs01_04_t1 + lambda5*rs01_05_t1 + lambda6*rs01_06_t1 + lambda7*rs01_07_t1 + lambda8*rs01_08_t1 + lambda9*rs01_09_t1 + lambda10*rs01_10_t1 
selfes2 =~ NA*rs01_01_t2 + lambda1*rs01_01_t2 + lambda2*rs01_02_t2 + lambda3*rs01_03_t2 + lambda4*rs01_04_t2 + lambda5*rs01_05_t2 + lambda6*rs01_06_t2 + lambda7*rs01_07_t2 + lambda8*rs01_08_t2 + lambda9*rs01_09_t2 + lambda10*rs01_10_t2

# Intercepts
rs01_01_t1 ~ i1*1
rs01_02_t1 ~ i2*1
rs01_03_t1 ~ i3*1
rs01_04_t1 ~ i4*1
rs01_05_t1 ~ i5*1
rs01_06_t1 ~ i6*1
rs01_07_t1 ~ i7*1
rs01_08_t1 ~ i8*1
rs01_09_t1 ~ i9*1
rs01_10_t1 ~ i10*1

rs01_01_t2 ~ i1*1
rs01_02_t2 ~ i2*1
rs01_03_t2 ~ i3*1
rs01_04_t2 ~ i4*1
rs01_05_t2 ~ i5*1
rs01_06_t2 ~ i6*1
rs01_07_t2 ~ i7*1
rs01_08_t2 ~ i8*1
rs01_09_t2 ~ i9*1
rs01_10_t2 ~ i10*1

# Unique Variances
rs01_01_t1 ~~ rs01_01_t1
rs01_02_t1 ~~ rs01_02_t1
rs01_03_t1 ~~ rs01_03_t1
rs01_04_t1 ~~ rs01_04_t1
rs01_05_t1 ~~ rs01_05_t1
rs01_06_t1 ~~ rs01_06_t1
rs01_07_t1 ~~ rs01_07_t1
rs01_08_t1 ~~ rs01_08_t1
rs01_09_t1 ~~ rs01_09_t1
rs01_10_t1 ~~ rs01_10_t1

rs01_01_t2 ~~ rs01_01_t2
rs01_02_t2 ~~ rs01_02_t2
rs01_03_t2 ~~ rs01_03_t2
rs01_04_t2 ~~ rs01_04_t2
rs01_05_t2 ~~ rs01_05_t2
rs01_06_t2 ~~ rs01_06_t2
rs01_07_t2 ~~ rs01_07_t2
rs01_08_t2 ~~ rs01_08_t2
rs01_09_t2 ~~ rs01_09_t2
rs01_10_t2 ~~ rs01_10_t2

# Latent Variable Means
selfes1 ~ 0*1
selfes2 ~ 1

# Latent Variable Variances and Covariance
selfes1 ~~ 1*selfes1
selfes2 ~~ selfes2
selfes1 ~~ selfes2
'
fit_strong_selfes <- cfa(strong_selfes, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_strong_selfes, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_selfes <- '
# Define the latent factors
selfes1 =~ NA*rs01_01_t1 + lambda1*rs01_01_t1 + lambda2*rs01_02_t1 + lambda3*rs01_03_t1 + lambda4*rs01_04_t1 + lambda5*rs01_05_t1 + lambda6*rs01_06_t1 + lambda7*rs01_07_t1 + lambda8*rs01_08_t1 + lambda9*rs01_09_t1 + lambda10*rs01_10_t1 
selfes2 =~ NA*rs01_01_t2 + lambda1*rs01_01_t2 + lambda2*rs01_02_t2 + lambda3*rs01_03_t2 + lambda4*rs01_04_t2 + lambda5*rs01_05_t2 + lambda6*rs01_06_t2 + lambda7*rs01_07_t2 + lambda8*rs01_08_t2 + lambda9*rs01_09_t2 + lambda10*rs01_10_t2

# Intercepts
rs01_01_t1 ~ i1*1
rs01_02_t1 ~ i2*1
rs01_03_t1 ~ i3*1
rs01_04_t1 ~ i4*1
rs01_05_t1 ~ i5*1
rs01_06_t1 ~ i6*1
rs01_07_t1 ~ i7*1
rs01_08_t1 ~ i8*1
rs01_09_t1 ~ i9*1
rs01_10_t1 ~ i10*1

rs01_01_t2 ~ i1*1
rs01_02_t2 ~ i2*1
rs01_03_t2 ~ i3*1
rs01_04_t2 ~ i4*1
rs01_05_t2 ~ i5*1
rs01_06_t2 ~ i6*1
rs01_07_t2 ~ i7*1
rs01_08_t2 ~ i8*1
rs01_09_t2 ~ i9*1
rs01_10_t2 ~ i10*1

# Unique Variances
rs01_01_t1 ~~ u1*rs01_01_t1
rs01_02_t1 ~~ u2*rs01_02_t1
rs01_03_t1 ~~ u3*rs01_03_t1
rs01_04_t1 ~~ u4*rs01_04_t1
rs01_05_t1 ~~ u5*rs01_05_t1
rs01_06_t1 ~~ u6*rs01_06_t1
rs01_07_t1 ~~ u7*rs01_07_t1
rs01_08_t1 ~~ u8*rs01_08_t1
rs01_09_t1 ~~ u9*rs01_09_t1
rs01_10_t1 ~~ u10*rs01_10_t1

rs01_01_t2 ~~ u1*rs01_01_t2
rs01_02_t2 ~~ u2*rs01_02_t2
rs01_03_t2 ~~ u3*rs01_03_t2
rs01_04_t2 ~~ u4*rs01_04_t2
rs01_05_t2 ~~ u5*rs01_05_t2
rs01_06_t2 ~~ u6*rs01_06_t2
rs01_07_t2 ~~ u7*rs01_07_t2
rs01_08_t2 ~~ u8*rs01_08_t2
rs01_09_t2 ~~ u9*rs01_09_t2
rs01_10_t2 ~~ u10*rs01_10_t2

# Latent Variable Means
selfes1 ~ 0*1
selfes2 ~ 1

# Latent Variable Variances and Covariance
selfes1 ~~ 1*selfes1
selfes2 ~~ selfes2
selfes1 ~~ selfes2
'
fit_strict_selfes <- cfa(strict_selfes, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_strict_selfes, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_selfes) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_selfes) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_selfes) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_selfes) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   624    61 1681. 32701. 32972. 0.810 0.786 0.120 0.0715
2 weak         624    52 1689. 32691. 32922. 0.810 0.797 0.117 0.0735
3 strong       624    43 1695. 32679. 32869. 0.811 0.808 0.114 0.0739
4 strict       624    33 1740. 32703. 32850. 0.806 0.813 0.112 0.0779
# chi-square difference test for nested models 
anova(fit_configural_selfes, fit_weak_selfes)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_selfes 169 32701 32972 1681.2                         
fit_weak_selfes       178 32691 32922 1689.2     8.0199     0       9
                      Pr(>Chisq)
fit_configural_selfes           
fit_weak_selfes           0.5321
anova(fit_weak_selfes, fit_strong_selfes)

Chi-Squared Difference Test

                   Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
fit_weak_selfes   178 32691 32922 1689.2                                    
fit_strong_selfes 187 32679 32869 1694.8     5.5478     0       9     0.7842
anova(fit_strong_selfes, fit_strict_selfes)

Chi-Squared Difference Test

                   Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff Pr(>Chisq)
fit_strong_selfes 187 32679 32869 1694.8                                       
fit_strict_selfes 197 32703 32850 1739.5     44.748 0.074623      10  2.415e-06
                     
fit_strong_selfes    
fit_strict_selfes ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Model fit relatively bad across all model specifications. Chi^2 tests indicate that strong measurement invariance is given.

3.2.4 Self concept clarity

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_concept <- '
# Define the latent factors
concept1 =~ NA*sc01_01_t1 + lambda1*sc01_01_t1 + sc01_02_t1 + sc01_03_t1 + sc01_04_t1 + sc01_05_t1 + sc01_06_t1 + sc01_07_t1 + sc01_08_t1 + sc01_09_t1 + sc01_10_t1 + sc01_11_t1 + sc01_12_t1
concept2 =~ NA*sc01_01_t2 + lambda1*sc01_01_t2 + sc01_02_t2 + sc01_03_t2 + sc01_04_t2 + sc01_05_t2 + sc01_06_t2 + sc01_07_t2 + sc01_08_t2 + sc01_09_t2 + sc01_10_t2 + sc01_11_t2 + sc01_12_t2

# Intercepts
sc01_01_t1 ~ i1*1
sc01_02_t1 ~ 1
sc01_03_t1 ~ 1
sc01_04_t1 ~ 1
sc01_05_t1 ~ 1
sc01_06_t1 ~ 1
sc01_07_t1 ~ 1
sc01_08_t1 ~ 1
sc01_09_t1 ~ 1
sc01_10_t1 ~ 1
sc01_11_t1 ~ 1
sc01_12_t1 ~ 1

sc01_01_t2 ~ i1*1
sc01_02_t2 ~ 1
sc01_03_t2 ~ 1
sc01_04_t2 ~ 1
sc01_05_t2 ~ 1
sc01_06_t2 ~ 1
sc01_07_t2 ~ 1
sc01_08_t2 ~ 1
sc01_09_t2 ~ 1
sc01_10_t2 ~ 1
sc01_11_t2 ~ 1
sc01_12_t2 ~ 1

# Unique Variances
sc01_01_t1 ~~ sc01_01_t1
sc01_02_t1 ~~ sc01_02_t1
sc01_03_t1 ~~ sc01_03_t1
sc01_04_t1 ~~ sc01_04_t1
sc01_05_t1 ~~ sc01_05_t1
sc01_06_t1 ~~ sc01_06_t1
sc01_07_t1 ~~ sc01_07_t1
sc01_08_t1 ~~ sc01_08_t1
sc01_09_t1 ~~ sc01_09_t1
sc01_10_t1 ~~ sc01_10_t1
sc01_11_t1 ~~ sc01_11_t1
sc01_12_t1 ~~ sc01_12_t1

sc01_01_t2 ~~ sc01_01_t2
sc01_02_t2 ~~ sc01_02_t2
sc01_03_t2 ~~ sc01_03_t2
sc01_04_t2 ~~ sc01_04_t2
sc01_05_t2 ~~ sc01_05_t2
sc01_06_t2 ~~ sc01_06_t2
sc01_07_t2 ~~ sc01_07_t2
sc01_08_t2 ~~ sc01_08_t2
sc01_09_t2 ~~ sc01_09_t2
sc01_10_t2 ~~ sc01_10_t2
sc01_11_t2 ~~ sc01_11_t2
sc01_12_t2 ~~ sc01_12_t2

# Latent Variable Means
concept1 ~ 0*1
concept2 ~ 1

# Latent Variable Variances and Covariance
concept1 ~~ 1*concept1
concept2 ~~ concept2
concept1 ~~ concept2
'
fit_configural_concept <- cfa(configural_concept, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_configural_concept, fit.measures = TRUE)

# Weak invariance model
weak_concept <- '
# Define the latent factors
concept1 =~ NA*sc01_01_t1 + lambda1*sc01_01_t1 + lambda2*sc01_02_t1 + lambda3*sc01_03_t1 + lambda4*sc01_04_t1 + lambda5*sc01_05_t1 + lambda6*sc01_06_t1 + lambda7*sc01_07_t1 + lambda8*sc01_08_t1 + lambda9*sc01_09_t1 + lambda10*sc01_10_t1 + lambda11*sc01_11_t1 + lambda12*sc01_12_t1
concept2 =~ NA*sc01_01_t2 + lambda1*sc01_01_t2 + lambda2*sc01_02_t2 + lambda3*sc01_03_t2 + lambda4*sc01_04_t2 + lambda5*sc01_05_t2 + lambda6*sc01_06_t2 + lambda7*sc01_07_t2 + lambda8*sc01_08_t2 + lambda9*sc01_09_t2 + lambda10*sc01_10_t2 + lambda11*sc01_11_t2 + lambda12*sc01_12_t2

# Intercepts
sc01_01_t1 ~ i1*1
sc01_02_t1 ~ 1
sc01_03_t1 ~ 1
sc01_04_t1 ~ 1
sc01_05_t1 ~ 1
sc01_06_t1 ~ 1
sc01_07_t1 ~ 1
sc01_08_t1 ~ 1
sc01_09_t1 ~ 1
sc01_10_t1 ~ 1
sc01_11_t1 ~ 1
sc01_12_t1 ~ 1

sc01_01_t2 ~ i1*1
sc01_02_t2 ~ 1
sc01_03_t2 ~ 1
sc01_04_t2 ~ 1
sc01_05_t2 ~ 1
sc01_06_t2 ~ 1
sc01_07_t2 ~ 1
sc01_08_t2 ~ 1
sc01_09_t2 ~ 1
sc01_10_t2 ~ 1
sc01_11_t2 ~ 1
sc01_12_t2 ~ 1

# Unique Variances
sc01_01_t1 ~~ sc01_01_t1
sc01_02_t1 ~~ sc01_02_t1
sc01_03_t1 ~~ sc01_03_t1
sc01_04_t1 ~~ sc01_04_t1
sc01_05_t1 ~~ sc01_05_t1
sc01_06_t1 ~~ sc01_06_t1
sc01_07_t1 ~~ sc01_07_t1
sc01_08_t1 ~~ sc01_08_t1
sc01_09_t1 ~~ sc01_09_t1
sc01_10_t1 ~~ sc01_10_t1
sc01_11_t1 ~~ sc01_11_t1
sc01_12_t1 ~~ sc01_12_t1

sc01_01_t2 ~~ sc01_01_t2
sc01_02_t2 ~~ sc01_02_t2
sc01_03_t2 ~~ sc01_03_t2
sc01_04_t2 ~~ sc01_04_t2
sc01_05_t2 ~~ sc01_05_t2
sc01_06_t2 ~~ sc01_06_t2
sc01_07_t2 ~~ sc01_07_t2
sc01_08_t2 ~~ sc01_08_t2
sc01_09_t2 ~~ sc01_09_t2
sc01_10_t2 ~~ sc01_10_t2
sc01_11_t2 ~~ sc01_11_t2
sc01_12_t2 ~~ sc01_12_t2

# Latent Variable Means
concept1 ~ 0*1
concept2 ~ 1

# Latent Variable Variances and Covariance
concept1 ~~ 1*concept1
concept2 ~~ concept2
concept1 ~~ concept2
'
fit_weak_concept <- cfa(weak_concept, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_weak_concept, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_concept <- '
# Define the latent factors
concept1 =~ NA*sc01_01_t1 + lambda1*sc01_01_t1 + lambda2*sc01_02_t1 + lambda3*sc01_03_t1 + lambda4*sc01_04_t1 + lambda5*sc01_05_t1 + lambda6*sc01_06_t1 + lambda7*sc01_07_t1 + lambda8*sc01_08_t1 + lambda9*sc01_09_t1 + lambda10*sc01_10_t1 + lambda11*sc01_11_t1 + lambda12*sc01_12_t1
concept2 =~ NA*sc01_01_t2 + lambda1*sc01_01_t2 + lambda2*sc01_02_t2 + lambda3*sc01_03_t2 + lambda4*sc01_04_t2 + lambda5*sc01_05_t2 + lambda6*sc01_06_t2 + lambda7*sc01_07_t2 + lambda8*sc01_08_t2 + lambda9*sc01_09_t2 + lambda10*sc01_10_t2 + lambda11*sc01_11_t2 + lambda12*sc01_12_t2

# Intercepts
sc01_01_t1 ~ i1*1
sc01_02_t1 ~ i2*1
sc01_03_t1 ~ i3*1
sc01_04_t1 ~ i4*1
sc01_05_t1 ~ i5*1
sc01_06_t1 ~ i6*1
sc01_07_t1 ~ i7*1
sc01_08_t1 ~ i8*1
sc01_09_t1 ~ i9*1
sc01_10_t1 ~ i10*1
sc01_11_t1 ~ i11*1
sc01_12_t1 ~ i12*1

sc01_01_t2 ~ i1*1
sc01_02_t2 ~ i2*1
sc01_03_t2 ~ i3*1
sc01_04_t2 ~ i4*1
sc01_05_t2 ~ i5*1
sc01_06_t2 ~ i6*1
sc01_07_t2 ~ i7*1
sc01_08_t2 ~ i8*1
sc01_09_t2 ~ i9*1
sc01_10_t2 ~ i10*1
sc01_11_t2 ~ i11*1
sc01_12_t2 ~ i12*1

# Unique Variances
sc01_01_t1 ~~ sc01_01_t1
sc01_02_t1 ~~ sc01_02_t1
sc01_03_t1 ~~ sc01_03_t1
sc01_04_t1 ~~ sc01_04_t1
sc01_05_t1 ~~ sc01_05_t1
sc01_06_t1 ~~ sc01_06_t1
sc01_07_t1 ~~ sc01_07_t1
sc01_08_t1 ~~ sc01_08_t1
sc01_09_t1 ~~ sc01_09_t1
sc01_10_t1 ~~ sc01_10_t1
sc01_11_t1 ~~ sc01_11_t1
sc01_12_t1 ~~ sc01_12_t1

sc01_01_t2 ~~ sc01_01_t2
sc01_02_t2 ~~ sc01_02_t2
sc01_03_t2 ~~ sc01_03_t2
sc01_04_t2 ~~ sc01_04_t2
sc01_05_t2 ~~ sc01_05_t2
sc01_06_t2 ~~ sc01_06_t2
sc01_07_t2 ~~ sc01_07_t2
sc01_08_t2 ~~ sc01_08_t2
sc01_09_t2 ~~ sc01_09_t2
sc01_10_t2 ~~ sc01_10_t2
sc01_11_t2 ~~ sc01_11_t2
sc01_12_t2 ~~ sc01_12_t2

# Latent Variable Means
concept1 ~ 0*1
concept2 ~ 1

# Latent Variable Variances and Covariance
concept1 ~~ 1*concept1
concept2 ~~ concept2
concept1 ~~ concept2
'
fit_strong_concept <- cfa(strong_concept, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_strong_concept, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_concept <- '
# Define the latent factors
concept1 =~ NA*sc01_01_t1 + lambda1*sc01_01_t1 + lambda2*sc01_02_t1 + lambda3*sc01_03_t1 + lambda4*sc01_04_t1 + lambda5*sc01_05_t1 + lambda6*sc01_06_t1 + lambda7*sc01_07_t1 + lambda8*sc01_08_t1 + lambda9*sc01_09_t1 + lambda10*sc01_10_t1 + lambda11*sc01_11_t1 + lambda12*sc01_12_t1
concept2 =~ NA*sc01_01_t2 + lambda1*sc01_01_t2 + lambda2*sc01_02_t2 + lambda3*sc01_03_t2 + lambda4*sc01_04_t2 + lambda5*sc01_05_t2 + lambda6*sc01_06_t2 + lambda7*sc01_07_t2 + lambda8*sc01_08_t2 + lambda9*sc01_09_t2 + lambda10*sc01_10_t2 + lambda11*sc01_11_t2 + lambda12*sc01_12_t2

# Intercepts
sc01_01_t1 ~ i1*1
sc01_02_t1 ~ i2*1
sc01_03_t1 ~ i3*1
sc01_04_t1 ~ i4*1
sc01_05_t1 ~ i5*1
sc01_06_t1 ~ i6*1
sc01_07_t1 ~ i7*1
sc01_08_t1 ~ i8*1
sc01_09_t1 ~ i9*1
sc01_10_t1 ~ i10*1
sc01_11_t1 ~ i11*1
sc01_12_t1 ~ i12*1

sc01_01_t2 ~ i1*1
sc01_02_t2 ~ i2*1
sc01_03_t2 ~ i3*1
sc01_04_t2 ~ i4*1
sc01_05_t2 ~ i5*1
sc01_06_t2 ~ i6*1
sc01_07_t2 ~ i7*1
sc01_08_t2 ~ i8*1
sc01_09_t2 ~ i9*1
sc01_10_t2 ~ i10*1
sc01_11_t2 ~ i11*1
sc01_12_t2 ~ i12*1

# Unique Variances
sc01_01_t1 ~~ u1*sc01_01_t1
sc01_02_t1 ~~ u2*sc01_02_t1
sc01_03_t1 ~~ u3*sc01_03_t1
sc01_04_t1 ~~ u4*sc01_04_t1
sc01_05_t1 ~~ u5*sc01_05_t1
sc01_06_t1 ~~ u6*sc01_06_t1
sc01_07_t1 ~~ u7*sc01_07_t1
sc01_08_t1 ~~ u8*sc01_08_t1
sc01_09_t1 ~~ u9*sc01_09_t1
sc01_10_t1 ~~ u10*sc01_10_t1
sc01_11_t1 ~~ u11*sc01_11_t1
sc01_12_t1 ~~ u12*sc01_12_t1

sc01_01_t2 ~~ u1*sc01_01_t2
sc01_02_t2 ~~ u2*sc01_02_t2
sc01_03_t2 ~~ u3*sc01_03_t2
sc01_04_t2 ~~ u4*sc01_04_t2
sc01_05_t2 ~~ u5*sc01_05_t2
sc01_06_t2 ~~ u6*sc01_06_t2
sc01_07_t2 ~~ u7*sc01_07_t2
sc01_08_t2 ~~ u8*sc01_08_t2
sc01_09_t2 ~~ u9*sc01_09_t2
sc01_10_t2 ~~ u10*sc01_10_t2
sc01_11_t2 ~~ u11*sc01_11_t2
sc01_12_t2 ~~ u12*sc01_12_t2

# Latent Variable Means
concept1 ~ 0*1
concept2 ~ 1

# Latent Variable Variances and Covariance
concept1 ~~ 1*concept1
concept2 ~~ concept2
concept1 ~~ concept2
'
fit_strict_concept <- cfa(strict_concept, data = df_sbsa_wide_wb, mimic = "mplus")
summary(fit_strict_concept, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_concept) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_concept) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_concept) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_concept) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   624    73 1588. 43467. 43790. 0.819 0.801 0.0924 0.0600
2 weak         624    62 1597. 43454. 43729. 0.819 0.809 0.0904 0.0610
3 strong       624    51 1620. 43455. 43681. 0.817 0.815 0.0889 0.0612
4 strict       624    39 1638. 43449. 43622. 0.817 0.822 0.0872 0.0623
# chi-square difference test for nested models 
anova(fit_configural_concept, fit_weak_concept)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_concept 251 43467 43790 1587.9                         
fit_weak_concept       262 43454 43729 1597.4     9.4712     0      11
                       Pr(>Chisq)
fit_configural_concept           
fit_weak_concept           0.5785
anova(fit_weak_concept, fit_strong_concept)

Chi-Squared Difference Test

                    Df   AIC   BIC  Chisq Chisq diff   RMSEA Df diff Pr(>Chisq)
fit_weak_concept   262 43454 43729 1597.4                                      
fit_strong_concept 273 43455 43681 1620.2     22.759 0.04139      11    0.01911
                    
fit_weak_concept    
fit_strong_concept *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit_strong_concept, fit_strict_concept)

Chi-Squared Difference Test

                    Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_concept 273 43455 43681 1620.2                            
fit_strict_concept 285 43449 43622 1637.9     17.768 0.027754      12
                   Pr(>Chisq)
fit_strong_concept           
fit_strict_concept     0.1229

Relatively bad model fit across all model specifications. Chi^2 tests indicate that only weak measurement invariance is given.


3.3 Hypothesis 2: Well-being - latent change

Both groups will increase in all four psychological well-being indicators.

We will test the mean-level difference between baseline and follow up using a latent change model.

3.3.1 Life satisfaction

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_swls_hyp2 <- '
swls_t1 =~ 1*sw06_01_t1 + lamb2*sw06_02_t1 + lamb3*sw06_03_t1 + lamb4*sw06_04_t1 + lamb5*sw06_05_t1 # This specifies the measurement model for swls_t1 
swls_t2 =~ 1*sw06_01_t2 + lamb2*sw06_02_t2 + lamb3*sw06_03_t2 + lamb4*sw06_04_t2 + lamb5*sw06_05_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadings

swls_t2 ~ 1*swls_t1     # This parameter regresses swls_t2 perfectly on swls_t1
d_swls_1 =~ 1*swls_t2   # This defines the latent change score factor as measured perfectly by scores on swls_t2
swls_t2 ~ 0*1           # This line constrains the intercept of swls_t2 to 0
swls_t2 ~~ 0*swls_t2    # This fixes the variance of swls_t2 to 0

d_swls_1 ~ 1           # This estimates the intercept of the change score 
swls_t1 ~ 1            # This estimates the intercept of swls_t1 
d_swls_1 ~~ d_swls_1   # This estimates the variance of the change scores 
swls_t1 ~~ swls_t1     # This estimates the variance of the swls_t1 
d_swls_1 ~ swls_t1     # This estimates the self-feedback parameter

sw06_01_t1 ~~ sw06_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
sw06_02_t1 ~~ sw06_02_t2   # This allows residual covariance on indicator X2 across T1 and T2
sw06_03_t1 ~~ sw06_03_t2   # This allows residual covariance on indicator X3 across T1 and T2
sw06_04_t1 ~~ sw06_04_t2   # This allows residual covariance on indicator X4 across T1 and T2
sw06_05_t1 ~~ sw06_05_t2   # This allows residual covariance on indicator X5 across T1 and T2

sw06_01_t1 ~~ res1*sw06_01_t1   # This allows residual variance on indicator X1 at T1 
sw06_02_t1 ~~ res2*sw06_02_t1   # This allows residual variance on indicator X2 at T1
sw06_03_t1 ~~ res3*sw06_03_t1   # This allows residual variance on indicator X3 at T1
sw06_04_t1 ~~ res4*sw06_04_t1   # This allows residual variance on indicator X4 at T1
sw06_05_t1 ~~ res5*sw06_05_t1   # This allows residual variance on indicator X5 at T1

sw06_01_t2 ~~ res1*sw06_01_t2  # This allows residual variance on indicator X1 at T2 
sw06_02_t2 ~~ res2*sw06_02_t2  # This allows residual variance on indicator X2 at T2 
sw06_03_t2 ~~ res3*sw06_03_t2  # This allows residual variance on indicator X3 at T2
sw06_04_t2 ~~ res4*sw06_04_t2  # This allows residual variance on indicator X4 at T2
sw06_05_t2 ~~ res5*sw06_05_t2  # This allows residual variance on indicator X5 at T2

sw06_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
sw06_02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
sw06_03_t1 ~ m3*1     # This estimates the intercept of X3 at T1
sw06_04_t1 ~ m4*1     # This estimates the intercept of X4 at T1
sw06_05_t1 ~ m5*1     # This estimates the intercept of X5 at T1

sw06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
sw06_02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
sw06_03_t2 ~ m3*1     # This estimates the intercept of X3 at T2
sw06_04_t2 ~ m4*1     # This estimates the intercept of X4 at T2
sw06_05_t2 ~ m5*1     # This estimates the intercept of X5 at T2
'
fit_mi_lcs_swls_hyp2 <- lavaan(mi_lcs_swls_hyp2, data=df_sbsa_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_swls_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_swls_hyp2) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
624 23 16152.46 16254.49 0.988 0.042 0.031
# parameters of interest
kable(broom::tidy(fit_mi_lcs_swls_hyp2, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("swls_t2 ~ swls_t1", "d_swls_1 =~ swls_t2", "d_swls_1 ~ swls_t1", # change parameters
                           "d_swls_1 ~1 ", "swls_t1 ~1 ", "", # means
                           "d_swls_1 ~~ d_swls_1")), digits = 3) # variances
term estimate std.all statistic p.value
swls_t2 ~ swls_t1 1.000 0.949 NA NA
d_swls_1 =~ swls_t2 1.000 0.636 NA NA
d_swls_1 ~1 0.770 1.183 8.026 0
swls_t1 ~1 2.704 2.783 59.832 0
d_swls_1 ~~ d_swls_1 0.397 0.936 10.186 0
d_swls_1 ~ swls_t1 -0.169 -0.253 -5.457 0

Plot model:

semPaths(fit_mi_lcs_swls_hyp2, what="est", 
         sizeLat = 7, sizeMan = 7, edge.label.cex = .75, intercepts = T, edge.color="black")

Significantly higher life satisfaction at the post test. Those with initially higher levels of life satisfaction (at T1) change to a lesser degree.

3.3.2 Meaning in life

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_meaning_hyp2 <- '
meaning_t1 =~ 1*ml01_01_t1 + lamb2*ml01_02_t1 + lamb3*ml01_03_t1 + lamb4*ml01_04_t1 + lamb5*ml01_05_t1 + lamb6*ml01_06_t1 + lamb7*ml01_07_t1 + lamb8*ml01_08_t1 + lamb9*ml01_09_t1 + lamb10*ml01_10_t1 # This specifies the measurement model for meaning_t1 
meaning_t2 =~ 1*ml01_01_t2 + lamb2*ml01_02_t2 + lamb3*ml01_03_t2 + lamb4*ml01_04_t2 + lamb5*ml01_05_t2 + lamb6*ml01_06_t2 + lamb7*ml01_07_t2 + lamb8*ml01_08_t2 + lamb9*ml01_09_t2 + lamb10*ml01_10_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadings

meaning_t2 ~ 1*meaning_t1     # This parameter regresses meaning_t2 perfectly on meaning_t1
d_meaning_1 =~ 1*meaning_t2   # This defines the latent change score factor as measured perfectly by scores on meaning_t2
meaning_t2 ~ 0*1              # This line constrains the intercept of meaning_t2 to 0
meaning_t2 ~~ 0*meaning_t2    # This fixes the variance of meaning_t2 to 0

d_meaning_1 ~ 1              # This estimates the intercept of the change score 
meaning_t1 ~ 1               # This estimates the intercept of meaning_t1 
d_meaning_1 ~~ d_meaning_1   # This estimates the variance of the change scores 
meaning_t1 ~~ meaning_t1     # This estimates the variance of the meaning_t1 
d_meaning_1 ~ meaning_t1     # This estimates the self-feedback parameter

ml01_01_t1 ~~ ml01_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
ml01_02_t1 ~~ ml01_02_t2   # This allows residual covariance on indicator X2 across T1 and T2
ml01_03_t1 ~~ ml01_03_t2   # This allows residual covariance on indicator X3 across T1 and T2
ml01_04_t1 ~~ ml01_04_t2   # This allows residual covariance on indicator X4 across T1 and T2
ml01_05_t1 ~~ ml01_05_t2   # This allows residual covariance on indicator X5 across T1 and T2
ml01_06_t1 ~~ ml01_06_t2   # This allows residual covariance on indicator X6 across T1 and T2
ml01_07_t1 ~~ ml01_07_t2   # This allows residual covariance on indicator X7 across T1 and T2
ml01_08_t1 ~~ ml01_08_t2   # This allows residual covariance on indicator X8 across T1 and T2
ml01_09_t1 ~~ ml01_09_t2   # This allows residual covariance on indicator X9 across T1 and T2
ml01_10_t1 ~~ ml01_10_t2   # This allows residual covariance on indicator X10 across T1 and T2

ml01_01_t1 ~~ res1*ml01_01_t1   # This allows residual variance on indicator X1 at T1 
ml01_02_t1 ~~ res2*ml01_02_t1   # This allows residual variance on indicator X2 at T1
ml01_03_t1 ~~ res3*ml01_03_t1   # This allows residual variance on indicator X3 at T1
ml01_04_t1 ~~ res4*ml01_04_t1   # This allows residual variance on indicator X4 at T1
ml01_05_t1 ~~ res5*ml01_05_t1   # This allows residual variance on indicator X5 at T1
ml01_06_t1 ~~ res6*ml01_06_t1   # This allows residual variance on indicator X6 at T1 
ml01_07_t1 ~~ res7*ml01_07_t1   # This allows residual variance on indicator X7 at T1
ml01_08_t1 ~~ res8*ml01_08_t1   # This allows residual variance on indicator X8 at T1
ml01_09_t1 ~~ res9*ml01_09_t1   # This allows residual variance on indicator X9 at T1
ml01_10_t1 ~~ res10*ml01_10_t1  # This allows residual variance on indicator X10 at T1

ml01_01_t2 ~~ res1*ml01_01_t2  # This allows residual variance on indicator X1 at T2 
ml01_02_t2 ~~ res2*ml01_02_t2  # This allows residual variance on indicator X2 at T2 
ml01_03_t2 ~~ res3*ml01_03_t2  # This allows residual variance on indicator X3 at T2
ml01_04_t2 ~~ res4*ml01_04_t2  # This allows residual variance on indicator X4 at T2
ml01_05_t2 ~~ res5*ml01_05_t2  # This allows residual variance on indicator X5 at T2
ml01_06_t2 ~~ res6*ml01_06_t2  # This allows residual variance on indicator X6 at T2 
ml01_07_t2 ~~ res7*ml01_07_t2  # This allows residual variance on indicator X7 at T2 
ml01_08_t2 ~~ res8*ml01_08_t2  # This allows residual variance on indicator X8 at T2
ml01_09_t2 ~~ res9*ml01_09_t2  # This allows residual variance on indicator X9 at T2
ml01_10_t2 ~~ res10*ml01_10_t2 # This allows residual variance on indicator X10 at T2

ml01_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ml01_02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ml01_03_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ml01_04_t1 ~ m4*1     # This estimates the intercept of X4 at T1
ml01_05_t1 ~ m5*1     # This estimates the intercept of X5 at T1
ml01_06_t1 ~ m6*1     # This estimates the intercept of X6 at T1
ml01_07_t1 ~ m7*1     # This estimates the intercept of X7 at T1
ml01_08_t1 ~ m8*1     # This estimates the intercept of X8 at T1
ml01_09_t1 ~ m9*1     # This estimates the intercept of X9 at T1
ml01_10_t1 ~ m10*1    # This estimates the intercept of X10 at T1

ml01_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ml01_02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ml01_03_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ml01_04_t2 ~ m4*1     # This estimates the intercept of X4 at T2
ml01_05_t2 ~ m5*1     # This estimates the intercept of X5 at T2
ml01_06_t2 ~ m6*1     # This estimates the intercept of X6 at T2
ml01_07_t2 ~ m7*1     # This estimates the intercept of X7 at T2
ml01_08_t2 ~ m8*1     # This estimates the intercept of X8 at T2
ml01_09_t2 ~ m9*1     # This estimates the intercept of X9 at T2
ml01_10_t2 ~ m10*1    # This estimates the intercept of X10 at T2
'
fit_mi_lcs_meaning_hyp2 <- lavaan(mi_lcs_meaning_hyp2, data=df_sbsa_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_meaning_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_meaning_hyp2) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
624 43 41901.49 42092.24 0.644 0.169 0.215
# parameters of interest
kable(broom::tidy(fit_mi_lcs_meaning_hyp2, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("meaning_t2 ~ meaning_t1", "d_meaning_1 =~ meaning_t2", "d_meaning_1 ~ meaning_t1", # change parameters
                           "d_meaning_1 ~1 ", "meaning_t1 ~1 ", "", # means
                           "d_meaning_1 ~~ d_meaning_1")), digits = 3) # variances
term estimate std.all statistic p.value
meaning_t2 ~ meaning_t1 1.000 0.969 NA NA
d_meaning_1 =~ meaning_t2 1.000 0.776 NA NA
d_meaning_1 ~1 1.585 1.460 9.758 0
meaning_t1 ~1 4.166 3.072 62.892 0
d_meaning_1 ~~ d_meaning_1 1.027 0.871 12.281 0
d_meaning_1 ~ meaning_t1 -0.288 -0.360 -8.164 0

Very bad model fit… Participants improved significantly in meaning in life across time.

3.3.3 Self-esteem

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_selfes_hyp2 <- '
selfes_t1 =~ 1*rs01_01_t1 + lamb2*rs01_02_t1 + lamb3*rs01_03_t1 + lamb4*rs01_04_t1 + lamb5*rs01_05_t1 + lamb6*rs01_06_t1 + lamb7*rs01_07_t1 + lamb8*rs01_08_t1 + lamb9*rs01_09_t1 + lamb10*rs01_10_t1 # This specifies the measurement model for selfes_t1 
selfes_t2 =~ 1*rs01_01_t2 + lamb2*rs01_02_t2 + lamb3*rs01_03_t2 + lamb4*rs01_04_t2 + lamb5*rs01_05_t2 + lamb6*rs01_06_t2 + lamb7*rs01_07_t2 + lamb8*rs01_08_t2 + lamb9*rs01_09_t2 + lamb10*rs01_10_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadings

selfes_t2 ~ 1*selfes_t1     # This parameter regresses selfes_t2 perfectly on selfes_t1
d_selfes_1 =~ 1*selfes_t2   # This defines the latent change score factor as measured perfectly by scores on selfes_t2
selfes_t2 ~ 0*1             # This line constrains the intercept of selfes_t2 to 0
selfes_t2 ~~ 0*selfes_t2    # This fixes the variance of selfes_t2 to 0

d_selfes_1 ~ 1             # This estimates the intercept of the change score 
selfes_t1 ~ 1              # This estimates the intercept of selfes_t1 
d_selfes_1 ~~ d_selfes_1   # This estimates the variance of the change scores 
selfes_t1 ~~ selfes_t1     # This estimates the variance of the selfes_t1 
d_selfes_1 ~ selfes_t1     # This estimates the self-feedback parameter

rs01_01_t1 ~~ rs01_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
rs01_02_t1 ~~ rs01_02_t2   # This allows residual covariance on indicator X2 across T1 and T2
rs01_03_t1 ~~ rs01_03_t2   # This allows residual covariance on indicator X3 across T1 and T2
rs01_04_t1 ~~ rs01_04_t2   # This allows residual covariance on indicator X4 across T1 and T2
rs01_05_t1 ~~ rs01_05_t2   # This allows residual covariance on indicator X5 across T1 and T2
rs01_06_t1 ~~ rs01_06_t2   # This allows residual covariance on indicator X6 across T1 and T2
rs01_07_t1 ~~ rs01_07_t2   # This allows residual covariance on indicator X7 across T1 and T2
rs01_08_t1 ~~ rs01_08_t2   # This allows residual covariance on indicator X8 across T1 and T2
rs01_09_t1 ~~ rs01_09_t2   # This allows residual covariance on indicator X9 across T1 and T2
rs01_10_t1 ~~ rs01_10_t2   # This allows residual covariance on indicator X10 across T1 and T2

rs01_01_t1 ~~ res1*rs01_01_t1   # This allows residual variance on indicator X1 at T1 
rs01_02_t1 ~~ res2*rs01_02_t1   # This allows residual variance on indicator X2 at T1
rs01_03_t1 ~~ res3*rs01_03_t1   # This allows residual variance on indicator X3 at T1
rs01_04_t1 ~~ res4*rs01_04_t1   # This allows residual variance on indicator X4 at T1
rs01_05_t1 ~~ res5*rs01_05_t1   # This allows residual variance on indicator X5 at T1
rs01_06_t1 ~~ res6*rs01_06_t1   # This allows residual variance on indicator X6 at T1 
rs01_07_t1 ~~ res7*rs01_07_t1   # This allows residual variance on indicator X7 at T1
rs01_08_t1 ~~ res8*rs01_08_t1   # This allows residual variance on indicator X8 at T1
rs01_09_t1 ~~ res9*rs01_09_t1   # This allows residual variance on indicator X9 at T1
rs01_10_t1 ~~ res10*rs01_10_t1  # This allows residual variance on indicator X10 at T1

rs01_01_t2 ~~ res1*rs01_01_t2  # This allows residual variance on indicator X1 at T2 
rs01_02_t2 ~~ res2*rs01_02_t2  # This allows residual variance on indicator X2 at T2 
rs01_03_t2 ~~ res3*rs01_03_t2  # This allows residual variance on indicator X3 at T2
rs01_04_t2 ~~ res4*rs01_04_t2  # This allows residual variance on indicator X4 at T2
rs01_05_t2 ~~ res5*rs01_05_t2  # This allows residual variance on indicator X5 at T2
rs01_06_t2 ~~ res6*rs01_06_t2  # This allows residual variance on indicator X6 at T2 
rs01_07_t2 ~~ res7*rs01_07_t2  # This allows residual variance on indicator X7 at T2 
rs01_08_t2 ~~ res8*rs01_08_t2  # This allows residual variance on indicator X8 at T2
rs01_09_t2 ~~ res9*rs01_09_t2  # This allows residual variance on indicator X9 at T2
rs01_10_t2 ~~ res10*rs01_10_t2 # This allows residual variance on indicator X10 at T2

rs01_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
rs01_02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
rs01_03_t1 ~ m3*1     # This estimates the intercept of X3 at T1
rs01_04_t1 ~ m4*1     # This estimates the intercept of X4 at T1
rs01_05_t1 ~ m5*1     # This estimates the intercept of X5 at T1
rs01_06_t1 ~ m6*1     # This estimates the intercept of X6 at T1
rs01_07_t1 ~ m7*1     # This estimates the intercept of X7 at T1
rs01_08_t1 ~ m8*1     # This estimates the intercept of X8 at T1
rs01_09_t1 ~ m9*1     # This estimates the intercept of X9 at T1
rs01_10_t1 ~ m10*1    # This estimates the intercept of X10 at T1

rs01_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
rs01_02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
rs01_03_t2 ~ m3*1     # This estimates the intercept of X3 at T2
rs01_04_t2 ~ m4*1     # This estimates the intercept of X4 at T2
rs01_05_t2 ~ m5*1     # This estimates the intercept of X5 at T2
rs01_06_t2 ~ m6*1     # This estimates the intercept of X6 at T2
rs01_07_t2 ~ m7*1     # This estimates the intercept of X7 at T2
rs01_08_t2 ~ m8*1     # This estimates the intercept of X8 at T2
rs01_09_t2 ~ m9*1     # This estimates the intercept of X9 at T2
rs01_10_t2 ~ m10*1    # This estimates the intercept of X10 at T2
'
fit_mi_lcs_selfes_hyp2 <- lavaan(mi_lcs_selfes_hyp2, data=df_sbsa_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_selfes_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_selfes_hyp2) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
624 43 31944.27 32135.02 0.903 0.081 0.065
# parameters of interest
kable(broom::tidy(fit_mi_lcs_selfes_hyp2, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("selfes_t2 ~ selfes_t1", "d_selfes_1 =~ selfes_t2", "d_selfes_1 ~ selfes_t1", # change parameters
                           "d_selfes_1 ~1 ", "selfes_t1 ~1 ", "", # means
                           "d_selfes_1 ~~ d_selfes_1")), digits = 3) # variances
term estimate std.all statistic p.value
selfes_t2 ~ selfes_t1 1.000 1.008 NA NA
d_selfes_1 =~ selfes_t2 1.000 0.676 NA NA
d_selfes_1 ~1 1.038 1.678 9.783 0
selfes_t1 ~1 2.986 3.238 63.666 0
d_selfes_1 ~~ d_selfes_1 0.336 0.879 9.718 0
d_selfes_1 ~ selfes_t1 -0.233 -0.348 -7.550 0

Participants increased significantly in self-esteem between the two assessments.

3.3.4 Self concept clarity

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_concept_hyp2 <- '
concept_t1 =~ 1*sc01_01_t1 + lamb2*sc01_02_t1 + lamb3*sc01_03_t1 + lamb4*sc01_04_t1 + lamb5*sc01_05_t1 + lamb6*sc01_06_t1 + lamb7*sc01_07_t1 + lamb8*sc01_08_t1 + lamb9*sc01_09_t1 + lamb10*sc01_10_t1 + lamb11*sc01_11_t1 + lamb12*sc01_12_t1 # This specifies the measurement model for concept_t1 
concept_t2 =~ 1*sc01_01_t2 + lamb2*sc01_02_t2 + lamb3*sc01_03_t2 + lamb4*sc01_04_t2 + lamb5*sc01_05_t2 + lamb6*sc01_06_t2 + lamb7*sc01_07_t2 + lamb8*sc01_08_t2 + lamb9*sc01_09_t2 + lamb10*sc01_10_t2 + lamb11*sc01_11_t2 + lamb12*sc01_12_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadings

concept_t2 ~ 1*concept_t1     # This parameter regresses concept_t2 perfectly on concept_t1
d_concept_1 =~ 1*concept_t2   # This defines the latent change score factor as measured perfectly by scores on concept_t2
concept_t2 ~ 0*1              # This line constrains the intercept of concept_t2 to 0
concept_t2 ~~ 0*concept_t2    # This fixes the variance of concept_t2 to 0

d_concept_1 ~ 1              # This estimates the intercept of the change score 
concept_t1 ~ 1               # This estimates the intercept of concept_t1 
d_concept_1 ~~ d_concept_1   # This estimates the variance of the change scores 
concept_t1 ~~ concept_t1     # This estimates the variance of the concept_t1 
d_concept_1 ~ concept_t1     # This estimates the self-feedback parameter

sc01_01_t1 ~~ sc01_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
sc01_02_t1 ~~ sc01_02_t2   # This allows residual covariance on indicator X2 across T1 and T2
sc01_03_t1 ~~ sc01_03_t2   # This allows residual covariance on indicator X3 across T1 and T2
sc01_04_t1 ~~ sc01_04_t2   # This allows residual covariance on indicator X4 across T1 and T2
sc01_05_t1 ~~ sc01_05_t2   # This allows residual covariance on indicator X5 across T1 and T2
sc01_06_t1 ~~ sc01_06_t2   # This allows residual covariance on indicator X6 across T1 and T2
sc01_07_t1 ~~ sc01_07_t2   # This allows residual covariance on indicator X7 across T1 and T2
sc01_08_t1 ~~ sc01_08_t2   # This allows residual covariance on indicator X8 across T1 and T2
sc01_09_t1 ~~ sc01_09_t2   # This allows residual covariance on indicator X9 across T1 and T2
sc01_10_t1 ~~ sc01_10_t2   # This allows residual covariance on indicator X10 across T1 and T2
sc01_11_t1 ~~ sc01_11_t2   # This allows residual covariance on indicator X11 across T1 and T2
sc01_12_t1 ~~ sc01_12_t2   # This allows residual covariance on indicator X12 across T1 and T2

sc01_01_t1 ~~ res1*sc01_01_t1   # This allows residual variance on indicator X1 at T1 
sc01_02_t1 ~~ res2*sc01_02_t1   # This allows residual variance on indicator X2 at T1
sc01_03_t1 ~~ res3*sc01_03_t1   # This allows residual variance on indicator X3 at T1
sc01_04_t1 ~~ res4*sc01_04_t1   # This allows residual variance on indicator X4 at T1
sc01_05_t1 ~~ res5*sc01_05_t1   # This allows residual variance on indicator X5 at T1
sc01_06_t1 ~~ res6*sc01_06_t1   # This allows residual variance on indicator X6 at T1 
sc01_07_t1 ~~ res7*sc01_07_t1   # This allows residual variance on indicator X7 at T1
sc01_08_t1 ~~ res8*sc01_08_t1   # This allows residual variance on indicator X8 at T1
sc01_09_t1 ~~ res9*sc01_09_t1   # This allows residual variance on indicator X9 at T1
sc01_10_t1 ~~ res10*sc01_10_t1  # This allows residual variance on indicator X10 at T1
sc01_11_t1 ~~ res11*sc01_11_t1  # This allows residual variance on indicator X11 at T1
sc01_12_t1 ~~ res12*sc01_12_t1  # This allows residual variance on indicator X12 at T1

sc01_01_t2 ~~ res1*sc01_01_t2  # This allows residual variance on indicator X1 at T2 
sc01_02_t2 ~~ res2*sc01_02_t2  # This allows residual variance on indicator X2 at T2 
sc01_03_t2 ~~ res3*sc01_03_t2  # This allows residual variance on indicator X3 at T2
sc01_04_t2 ~~ res4*sc01_04_t2  # This allows residual variance on indicator X4 at T2
sc01_05_t2 ~~ res5*sc01_05_t2  # This allows residual variance on indicator X5 at T2
sc01_06_t2 ~~ res6*sc01_06_t2  # This allows residual variance on indicator X6 at T2 
sc01_07_t2 ~~ res7*sc01_07_t2  # This allows residual variance on indicator X7 at T2 
sc01_08_t2 ~~ res8*sc01_08_t2  # This allows residual variance on indicator X8 at T2
sc01_09_t2 ~~ res9*sc01_09_t2  # This allows residual variance on indicator X9 at T2
sc01_10_t2 ~~ res10*sc01_10_t2 # This allows residual variance on indicator X10 at T2
sc01_11_t2 ~~ res11*sc01_11_t2 # This allows residual variance on indicator X11 at T2
sc01_12_t2 ~~ res12*sc01_12_t2 # This allows residual variance on indicator X12 at T2

sc01_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
sc01_02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
sc01_03_t1 ~ m3*1     # This estimates the intercept of X3 at T1
sc01_04_t1 ~ m4*1     # This estimates the intercept of X4 at T1
sc01_05_t1 ~ m5*1     # This estimates the intercept of X5 at T1
sc01_06_t1 ~ m6*1     # This estimates the intercept of X6 at T1
sc01_07_t1 ~ m7*1     # This estimates the intercept of X7 at T1
sc01_08_t1 ~ m8*1     # This estimates the intercept of X8 at T1
sc01_09_t1 ~ m9*1     # This estimates the intercept of X9 at T1
sc01_10_t1 ~ m10*1    # This estimates the intercept of X10 at T1
sc01_11_t1 ~ m11*1    # This estimates the intercept of X11 at T1
sc01_12_t1 ~ m12*1    # This estimates the intercept of X12 at T1

sc01_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
sc01_02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
sc01_03_t2 ~ m3*1     # This estimates the intercept of X3 at T2
sc01_04_t2 ~ m4*1     # This estimates the intercept of X4 at T2
sc01_05_t2 ~ m5*1     # This estimates the intercept of X5 at T2
sc01_06_t2 ~ m6*1     # This estimates the intercept of X6 at T2
sc01_07_t2 ~ m7*1     # This estimates the intercept of X7 at T2
sc01_08_t2 ~ m8*1     # This estimates the intercept of X8 at T2
sc01_09_t2 ~ m9*1     # This estimates the intercept of X9 at T2
sc01_10_t2 ~ m10*1    # This estimates the intercept of X10 at T2
sc01_11_t2 ~ m11*1    # This estimates the intercept of X11 at T2
sc01_12_t2 ~ m12*1    # This estimates the intercept of X12 at T2
'
fit_mi_lcs_concept_hyp2 <- lavaan(mi_lcs_concept_hyp2, data=df_sbsa_wide_wb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_concept_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_concept_hyp2) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
624 51 42736.63 42962.87 0.915 0.061 0.051
# parameters of interest
kable(broom::tidy(fit_mi_lcs_concept_hyp2, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("concept_t2 ~ concept_t1", "d_concept_1 =~ concept_t2", "d_concept_1 ~ concept_t1", # change parameters
                           "d_concept_1 ~1 ", "concept_t1 ~1 ", "", # means
                           "d_concept_1 ~~ d_concept_1")), digits = 3) # variances
term estimate std.all statistic p.value
concept_t2 ~ concept_t1 1.000 0.968 NA NA
d_concept_1 =~ concept_t2 1.000 0.806 NA NA
d_concept_1 ~1 0.738 0.968 6.484 0
concept_t1 ~1 3.207 3.503 69.349 0
d_concept_1 ~~ d_concept_1 0.499 0.859 9.676 0
d_concept_1 ~ concept_t1 -0.313 -0.376 -8.807 0

Self concept clarity improved significantly across time.


3.4 Hypothesis 3: Distance between ideal- and current-self over time

The distance between ideal- and current-self will decrease in both groups.

We will use two strategies to test this hypothesis. First, we will compute the Fisher z-transformed profile correlation between current- and ideal-self and test whether it increased across assessments. Second, we will test whether the squared difference between current- and ideal-self ratings for each Big Five trait decreased across assessments. We will test mean-level differences in profile correlations and squared differences between baseline and follow up using repeated-measures t-test.

3.4.1 Profile similarity

Reshape to wide:

Show the code
# reshape to wide
df_sbsa_wide_profdiff <- df_sbsa %>% 
  arrange(pid, time) %>% 
  select(pid, time, profile_corr_item_z, profile_corr_facet_z, ends_with("_sqdiff")) %>% 
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = -c(pid, time))

Checking assumptions

# item-level profile correlation
shapiro.test(df_sbsa_wide_profdiff$profile_corr_item_z_t2 - df_sbsa_wide_profdiff$profile_corr_item_z_t1) 

    Shapiro-Wilk normality test

data:  df_sbsa_wide_profdiff$profile_corr_item_z_t2 - df_sbsa_wide_profdiff$profile_corr_item_z_t1
W = 0.90469, p-value < 2.2e-16
lillie.test(df_sbsa_wide_profdiff$profile_corr_item_z_t2 - df_sbsa_wide_profdiff$profile_corr_item_z_t1)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa_wide_profdiff$profile_corr_item_z_t2 - df_sbsa_wide_profdiff$profile_corr_item_z_t1
D = 0.092407, p-value = 1.689e-13
# descriptives
psych::describe(df_sbsa_wide_profdiff$profile_corr_item_z_t1)
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 613 0.38 0.48   0.37    0.36 0.46 -1.05 2.65   3.7 0.48     1.02 0.02
psych::describe(df_sbsa_wide_profdiff$profile_corr_item_z_t2)
   vars   n mean   sd median trimmed  mad  min  max range skew kurtosis   se
X1    1 621 0.55 0.53   0.51    0.53 0.52 -0.9 3.44  4.34 0.71     2.36 0.02
# facet-level profile correlation
shapiro.test(df_sbsa_wide_profdiff$profile_corr_facet_z_t2 - df_sbsa_wide_profdiff$profile_corr_facet_z_t1) 

    Shapiro-Wilk normality test

data:  df_sbsa_wide_profdiff$profile_corr_facet_z_t2 - df_sbsa_wide_profdiff$profile_corr_facet_z_t1
W = 0.92367, p-value < 2.2e-16
lillie.test(df_sbsa_wide_profdiff$profile_corr_facet_z_t2 - df_sbsa_wide_profdiff$profile_corr_facet_z_t1)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa_wide_profdiff$profile_corr_facet_z_t2 - df_sbsa_wide_profdiff$profile_corr_facet_z_t1
D = 0.086905, p-value = 7.388e-12
# descriptives
psych::describe(df_sbsa_wide_profdiff$profile_corr_facet_z_t1)
   vars   n mean   sd median trimmed  mad  min  max range skew kurtosis   se
X1    1 613 0.28 0.66   0.22    0.25 0.65 -1.5 2.65  4.15 0.46     0.38 0.03
psych::describe(df_sbsa_wide_profdiff$profile_corr_facet_z_t2)
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 622  0.5 0.74   0.46    0.48 0.75 -1.46 3.94   5.4 0.43     0.79 0.03

Results summary:

t_profile_corr_item <- t.test(df_sbsa_wide_profdiff$profile_corr_item_z_t2, df_sbsa_wide_profdiff$profile_corr_item_z_t1, paired = TRUE)
t_profile_corr_facet <- t.test(df_sbsa_wide_profdiff$profile_corr_facet_z_t2, df_sbsa_wide_profdiff$profile_corr_facet_z_t1, paired = TRUE)

kable(bind_rows(tidy(t_profile_corr_item), tidy(t_profile_corr_facet)) %>% mutate(outcome = c("Item-level profile corr.", "Facet-level profile corr.")) %>% select(outcome, everything()), digits = 3)
outcome estimate statistic p.value parameter conf.low conf.high method alternative
Item-level profile corr. 0.170 10.495 0 609 0.138 0.202 Paired t-test two.sided
Facet-level profile corr. 0.213 9.748 0 609 0.170 0.256 Paired t-test two.sided
# effect sizes
d_profile_corr_item <- psych::cohen.d(profile_corr_item_z ~ time, data = df_sbsa)
d_profile_corr_item$cohen.d
                        lower   effect     upper
profile_corr_item_z 0.2291052 0.341577 0.4539117
d_profile_corr_facet <- psych::cohen.d(profile_corr_facet_z ~ time, data = df_sbsa)
d_profile_corr_facet$cohen.d
                         lower    effect     upper
profile_corr_facet_z 0.1981263 0.3104049 0.4225599

Plot

profile_df_plot <- df_sbsa %>% select(pid, time, profile_corr_item_z, profile_corr_facet_z) %>% 
  pivot_longer(-c(pid, time), names_to = "itemfacet", values_to = "corr") %>% 
  mutate(itemfacet2 = fct_recode(itemfacet, "Item-level" = "profile_corr_item_z", "Facet-level" = "profile_corr_facet_z"),
         itemfacet2 = fct_reorder(itemfacet2, corr, .desc = F))

ggplot(profile_df_plot) + 
  aes(x = as.factor(time), y = corr) + 
  geom_boxplot() + 
  geom_violin(fill = NA) +
  facet_wrap(vars(itemfacet2)) +
  labs(x = "Measurement Occasion", y = "Profile correlation", 
       title = "Hypothesis 3: Distance between ideal- and current-self") + 
  theme_bw()

Significantly higher profile correlations at the second measurement occasion, both for the item-level profile correlation and the facet-level profile correlations.

3.4.2 Individual traits: squared differences

Checking assumptions

# extra
shapiro.test(df_sbsa_wide_profdiff$extra_sqdiff_t2 - df_sbsa_wide_profdiff$extra_sqdiff_t1) 

    Shapiro-Wilk normality test

data:  df_sbsa_wide_profdiff$extra_sqdiff_t2 - df_sbsa_wide_profdiff$extra_sqdiff_t1
W = 0.87655, p-value < 2.2e-16
lillie.test(df_sbsa_wide_profdiff$extra_sqdiff_t2 - df_sbsa_wide_profdiff$extra_sqdiff_t1)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa_wide_profdiff$extra_sqdiff_t2 - df_sbsa_wide_profdiff$extra_sqdiff_t1
D = 0.15078, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa_wide_profdiff$extra_sqdiff_t1)
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 615 1.84 2.03   1.17    1.46 1.48   0 11.11 11.11 1.75     3.26 0.08
psych::describe(df_sbsa_wide_profdiff$extra_sqdiff_t2)
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 622 1.34 1.62   0.69    1.01 0.94   0 10.56 10.56 2.04     4.77 0.06
# agree
shapiro.test(df_sbsa_wide_profdiff$agree_sqdiff_t2 - df_sbsa_wide_profdiff$agree_sqdiff_t1) 

    Shapiro-Wilk normality test

data:  df_sbsa_wide_profdiff$agree_sqdiff_t2 - df_sbsa_wide_profdiff$agree_sqdiff_t1
W = 0.78843, p-value < 2.2e-16
lillie.test(df_sbsa_wide_profdiff$agree_sqdiff_t2 - df_sbsa_wide_profdiff$agree_sqdiff_t1)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa_wide_profdiff$agree_sqdiff_t2 - df_sbsa_wide_profdiff$agree_sqdiff_t1
D = 0.195, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa_wide_profdiff$agree_sqdiff_t1)
   vars   n mean   sd median trimmed  mad min  max range skew kurtosis   se
X1    1 615 0.56 0.98   0.17    0.35 0.25   0 9.84  9.84 4.08    23.85 0.04
psych::describe(df_sbsa_wide_profdiff$agree_sqdiff_t2)
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 622  0.4 0.77   0.11    0.23 0.15   0 10.03 10.03  5.7    51.24 0.03
# consc
shapiro.test(df_sbsa_wide_profdiff$consc_sqdiff_t2 - df_sbsa_wide_profdiff$consc_sqdiff_t1) 

    Shapiro-Wilk normality test

data:  df_sbsa_wide_profdiff$consc_sqdiff_t2 - df_sbsa_wide_profdiff$consc_sqdiff_t1
W = 0.82303, p-value < 2.2e-16
lillie.test(df_sbsa_wide_profdiff$consc_sqdiff_t2 - df_sbsa_wide_profdiff$consc_sqdiff_t1)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa_wide_profdiff$consc_sqdiff_t2 - df_sbsa_wide_profdiff$consc_sqdiff_t1
D = 0.15403, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa_wide_profdiff$consc_sqdiff_t1)
   vars   n mean  sd median trimmed  mad min   max range skew kurtosis   se
X1    1 615 1.71 2.1      1    1.31 1.32   0 14.06 14.06 2.24     6.78 0.08
psych::describe(df_sbsa_wide_profdiff$consc_sqdiff_t2)
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 622 1.36 1.77   0.69    1.01 0.99   0 13.44 13.44  2.4     7.86 0.07
# neuro
shapiro.test(df_sbsa_wide_profdiff$neuro_sqdiff_t2 - df_sbsa_wide_profdiff$neuro_sqdiff_t1) 

    Shapiro-Wilk normality test

data:  df_sbsa_wide_profdiff$neuro_sqdiff_t2 - df_sbsa_wide_profdiff$neuro_sqdiff_t1
W = 0.9101, p-value < 2.2e-16
lillie.test(df_sbsa_wide_profdiff$neuro_sqdiff_t2 - df_sbsa_wide_profdiff$neuro_sqdiff_t1)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa_wide_profdiff$neuro_sqdiff_t2 - df_sbsa_wide_profdiff$neuro_sqdiff_t1
D = 0.12013, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa_wide_profdiff$neuro_sqdiff_t1)
   vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 615 3.37 3.47   2.25    2.79 2.68   0  16    16 1.39     1.41 0.14
psych::describe(df_sbsa_wide_profdiff$neuro_sqdiff_t2)
   vars   n mean  sd median trimmed  mad min   max range skew kurtosis   se
X1    1 622 2.67 3.1   1.56    2.06 1.95   0 15.34 15.34 1.76     2.86 0.12
# openn
shapiro.test(df_sbsa_wide_profdiff$openn_sqdiff_t2 - df_sbsa_wide_profdiff$openn_sqdiff_t1) 

    Shapiro-Wilk normality test

data:  df_sbsa_wide_profdiff$openn_sqdiff_t2 - df_sbsa_wide_profdiff$openn_sqdiff_t1
W = 0.79836, p-value < 2.2e-16
lillie.test(df_sbsa_wide_profdiff$openn_sqdiff_t2 - df_sbsa_wide_profdiff$openn_sqdiff_t1)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa_wide_profdiff$openn_sqdiff_t2 - df_sbsa_wide_profdiff$openn_sqdiff_t1
D = 0.19388, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa_wide_profdiff$openn_sqdiff_t1)
   vars   n mean   sd median trimmed  mad min  max range skew kurtosis   se
X1    1 615 0.46 0.77   0.11    0.28 0.16   0 5.06  5.06 2.85     9.64 0.03
psych::describe(df_sbsa_wide_profdiff$openn_sqdiff_t2)
   vars   n mean   sd median trimmed  mad min  max range skew kurtosis   se
X1    1 622 0.37 0.61   0.11    0.23 0.15   0 4.34  4.34 3.04    11.89 0.02

Results summary:

mod_traits_sqdiff <- df_sbsa_wide_profdiff %>% 
  select(-starts_with("profile")) %>% 
  pivot_longer(-c(pid), 
               names_to = c("test", "time"), values_to = "score", 
               names_pattern = "(.*)_(t1|t2)") %>% 
  filter(!is.na(score)) %>% 
  group_by(pid, test) %>% 
  mutate(assessments = n()) %>% 
  ungroup() %>% 
  filter(assessments==2) %>% 
  select(-assessments) %>% 
  group_nest(test) %>% 
  mutate(t_tests = map(data, ~t.test(score ~ time, data = .x, paired = TRUE))) %>% 
  pull(t_tests) %>% 
  purrr::set_names(names(b5_vars))

mod_traits_unlist <- mod_traits_sqdiff[[1]] %>% tidy()
for (i in 2:length(mod_traits_sqdiff)) {
  mod_traits_unlist <- bind_rows(mod_traits_unlist, mod_traits_sqdiff[[i]] %>% tidy())
}

kable(mod_traits_unlist %>% mutate(outcome = names(b5_vars)) %>% select(outcome, everything()), digits = 3)
outcome estimate statistic p.value parameter conf.low conf.high method alternative
extraversion 0.092 2.383 0.017 610 0.016 0.168 Paired t-test two.sided
agreeableness 0.168 5.380 0.000 611 0.106 0.229 Paired t-test two.sided
conscientiousness 0.663 4.633 0.000 611 0.382 0.944 Paired t-test two.sided
neuroticism 0.449 5.125 0.000 611 0.277 0.621 Paired t-test two.sided
openness 0.154 4.226 0.000 610 0.082 0.225 Paired t-test two.sided
sociability 0.326 4.766 0.000 611 0.192 0.460 Paired t-test two.sided
assertiveness 0.148 3.122 0.002 610 0.055 0.242 Paired t-test two.sided
energy 0.956 7.590 0.000 610 0.709 1.203 Paired t-test two.sided
compassion 0.493 5.076 0.000 610 0.303 0.684 Paired t-test two.sided
respectfulness 0.499 7.441 0.000 611 0.367 0.630 Paired t-test two.sided
trust 0.215 3.079 0.002 611 0.078 0.352 Paired t-test two.sided
organization 0.700 7.172 0.000 611 0.508 0.891 Paired t-test two.sided
productiveness 0.099 3.567 0.000 611 0.045 0.154 Paired t-test two.sided
responsibility 0.408 4.261 0.000 610 0.220 0.596 Paired t-test two.sided
anxiety 0.557 5.327 0.000 610 0.352 0.762 Paired t-test two.sided
depression 0.149 3.523 0.000 610 0.066 0.232 Paired t-test two.sided
volatility 0.247 3.706 0.000 610 0.116 0.378 Paired t-test two.sided
curiosity 0.796 7.663 0.000 611 0.592 1.000 Paired t-test two.sided
aesthetic 0.354 4.970 0.000 610 0.214 0.493 Paired t-test two.sided
imagination 0.699 6.250 0.000 610 0.479 0.918 Paired t-test two.sided
# effect sizes
cohend_cust = function(outcome, df) {
  form = as.formula(paste0(outcome, " ~ time"))
  psych::cohen.d(form, data = df)
}

d_trait <- cohend_cust(paste0(str_trunc(names(b5_vars)[1], 5, ellipsis = ""), "_sqdiff"), df_sbsa)
d_traits_unlist <- as_tibble(d_trait$cohen.d)
for (i in 2:length(names(b5_vars))) {
  d_trait <- cohend_cust(paste0(str_trunc(names(b5_vars)[i], 5, ellipsis = ""), "_sqdiff"), df_sbsa)
  d_traits_unlist <- bind_rows(d_traits_unlist, as_tibble(d_trait$cohen.d))
}
kable(d_traits_unlist %>% mutate(outcome = names(b5_vars)) %>% select(outcome, everything()), digits = 3)
outcome lower effect upper
extraversion -0.384 -0.272 -0.160
agreeableness -0.302 -0.190 -0.078
conscientiousness -0.289 -0.177 -0.065
neuroticism -0.326 -0.214 -0.102
openness -0.246 -0.135 -0.023
sociability -0.375 -0.263 -0.151
assertiveness -0.323 -0.211 -0.100
energy -0.321 -0.209 -0.097
compassion -0.289 -0.177 -0.065
respectfulness -0.240 -0.129 -0.017
trust -0.329 -0.218 -0.106
organization -0.282 -0.171 -0.059
productiveness -0.297 -0.185 -0.073
responsibility -0.256 -0.144 -0.032
anxiety -0.272 -0.161 -0.049
depression -0.358 -0.246 -0.134
volatility -0.316 -0.204 -0.093
curiosity -0.252 -0.140 -0.028
aesthetic -0.240 -0.129 -0.017
imagination -0.212 -0.100 0.011

Significantly lower squared mean-level differences at the second measurement occasion, both for the Big Five traits and the 15 BFI-2 facets.

Plot (traits/facets sorted by average size of squared differences)

sqdiff_df_plot <- df_sbsa %>% 
  select(pid, time, all_of(paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_sqdiff"))) %>% 
  pivot_longer(-c(pid, time), names_to = "trait", values_to = "sqdiff") %>% 
  group_by(trait) %>% 
  mutate(cur_group_id()) %>% 
  ungroup() %>% 
  mutate(trait2 = fct_recode(trait, !!! setNames(paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_sqdiff"),
                                                 str_to_title(names(b5_vars)))),
         trait2 = fct_reorder(trait2, sqdiff, .desc = T))

plot_sqdiff <- ggplot(sqdiff_df_plot) + 
  aes(x = as.factor(time), y = sqdiff) + 
  geom_boxplot() + 
  geom_violin(fill = NA) +
  ggforce::facet_wrap_paginate(~trait2, ncol=3, nrow=2) +
  labs(x = "Measurement Occasion", y = "Squared difference") + 
  theme_bw()

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 1)

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 2)

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 3)

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 4)

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 5)

For some of the facets, the distribution look very similar and differences over time are perhaps driven by outliers.


3.5 Measurement invariance: BFI-2

Testing for measurement invariance of the latent BFI-2 traits across time.

Reshape BFI-2 data:

Show the code
df_sbsa_wide_pers <- df_sbsa %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("bf05", "bf06"))) %>% 
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = starts_with(c("bf05", "bf06")))
colnames(df_sbsa_wide_pers)

3.5.1 Extraversion: current-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*bf05_01_t1 + lambda1*bf05_01_t1 + bf05_06_t1 + bf05_11_t1 + bf05_16_t1 + bf05_21_t1 + bf05_26_t1 + bf05_31_t1 + bf05_36_t1 + bf05_41_t1 + bf05_46_t1 + bf05_51_t1 + bf05_56_t1
extra_curr2 =~ NA*bf05_01_t2 + lambda1*bf05_01_t2 + bf05_06_t2 + bf05_11_t2 + bf05_16_t2 + bf05_21_t2 + bf05_26_t2 + bf05_31_t2 + bf05_36_t2 + bf05_41_t2 + bf05_46_t2 + bf05_51_t2 + bf05_56_t2

# Intercepts
bf05_01_t1 ~ i1*1
bf05_06_t1 ~ 1
bf05_11_t1 ~ 1
bf05_16_t1 ~ 1
bf05_21_t1 ~ 1
bf05_26_t1 ~ 1
bf05_31_t1 ~ 1
bf05_36_t1 ~ 1
bf05_41_t1 ~ 1
bf05_46_t1 ~ 1
bf05_51_t1 ~ 1
bf05_56_t1 ~ 1

bf05_01_t2 ~ i1*1
bf05_06_t2 ~ 1
bf05_11_t2 ~ 1
bf05_16_t2 ~ 1
bf05_21_t2 ~ 1
bf05_26_t2 ~ 1
bf05_31_t2 ~ 1
bf05_36_t2 ~ 1
bf05_41_t2 ~ 1
bf05_46_t2 ~ 1
bf05_51_t2 ~ 1
bf05_56_t2 ~ 1

# Unique Variances
bf05_01_t1 ~~ bf05_01_t1
bf05_06_t1 ~~ bf05_06_t1
bf05_11_t1 ~~ bf05_11_t1
bf05_16_t1 ~~ bf05_16_t1
bf05_21_t1 ~~ bf05_21_t1
bf05_26_t1 ~~ bf05_26_t1
bf05_31_t1 ~~ bf05_31_t1
bf05_36_t1 ~~ bf05_36_t1
bf05_41_t1 ~~ bf05_41_t1
bf05_46_t1 ~~ bf05_46_t1
bf05_51_t1 ~~ bf05_51_t1
bf05_56_t1 ~~ bf05_56_t1

bf05_01_t2 ~~ bf05_01_t2
bf05_06_t2 ~~ bf05_06_t2
bf05_11_t2 ~~ bf05_11_t2
bf05_16_t2 ~~ bf05_16_t2
bf05_21_t2 ~~ bf05_21_t2
bf05_26_t2 ~~ bf05_26_t2
bf05_31_t2 ~~ bf05_31_t2
bf05_36_t2 ~~ bf05_36_t2
bf05_41_t2 ~~ bf05_41_t2
bf05_46_t2 ~~ bf05_46_t2
bf05_51_t2 ~~ bf05_51_t2
bf05_56_t2 ~~ bf05_56_t2

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_configural_extra_curr <- cfa(configural_extra_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_extra_curr, fit.measures = TRUE)

# Weak invariance model
weak_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*bf05_01_t1 + lambda1*bf05_01_t1 + lambda2*bf05_06_t1 + lambda3*bf05_11_t1 + lambda4*bf05_16_t1 + lambda5*bf05_21_t1 + lambda6*bf05_26_t1 + lambda7*bf05_31_t1 + lambda8*bf05_36_t1 + lambda9*bf05_41_t1 + lambda10*bf05_46_t1 + lambda11*bf05_51_t1 + lambda12*bf05_56_t1
extra_curr2 =~ NA*bf05_01_t2 + lambda1*bf05_01_t2 + lambda2*bf05_06_t2 + lambda3*bf05_11_t2 + lambda4*bf05_16_t2 + lambda5*bf05_21_t2 + lambda6*bf05_26_t2 + lambda7*bf05_31_t2 + lambda8*bf05_36_t2 + lambda9*bf05_41_t2 + lambda10*bf05_46_t2 + lambda11*bf05_51_t2 + lambda12*bf05_56_t2

# Intercepts
bf05_01_t1 ~ i1*1
bf05_06_t1 ~ 1
bf05_11_t1 ~ 1
bf05_16_t1 ~ 1
bf05_21_t1 ~ 1
bf05_26_t1 ~ 1
bf05_31_t1 ~ 1
bf05_36_t1 ~ 1
bf05_41_t1 ~ 1
bf05_46_t1 ~ 1
bf05_51_t1 ~ 1
bf05_56_t1 ~ 1

bf05_01_t2 ~ i1*1
bf05_06_t2 ~ 1
bf05_11_t2 ~ 1
bf05_16_t2 ~ 1
bf05_21_t2 ~ 1
bf05_26_t2 ~ 1
bf05_31_t2 ~ 1
bf05_36_t2 ~ 1
bf05_41_t2 ~ 1
bf05_46_t2 ~ 1
bf05_51_t2 ~ 1
bf05_56_t2 ~ 1

# Unique Variances
bf05_01_t1 ~~ bf05_01_t1
bf05_06_t1 ~~ bf05_06_t1
bf05_11_t1 ~~ bf05_11_t1
bf05_16_t1 ~~ bf05_16_t1
bf05_21_t1 ~~ bf05_21_t1
bf05_26_t1 ~~ bf05_26_t1
bf05_31_t1 ~~ bf05_31_t1
bf05_36_t1 ~~ bf05_36_t1
bf05_41_t1 ~~ bf05_41_t1
bf05_46_t1 ~~ bf05_46_t1
bf05_51_t1 ~~ bf05_51_t1
bf05_56_t1 ~~ bf05_56_t1

bf05_01_t2 ~~ bf05_01_t2
bf05_06_t2 ~~ bf05_06_t2
bf05_11_t2 ~~ bf05_11_t2
bf05_16_t2 ~~ bf05_16_t2
bf05_21_t2 ~~ bf05_21_t2
bf05_26_t2 ~~ bf05_26_t2
bf05_31_t2 ~~ bf05_31_t2
bf05_36_t2 ~~ bf05_36_t2
bf05_41_t2 ~~ bf05_41_t2
bf05_46_t2 ~~ bf05_46_t2
bf05_51_t2 ~~ bf05_51_t2
bf05_56_t2 ~~ bf05_56_t2

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_weak_extra_curr <- cfa(weak_extra_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_extra_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*bf05_01_t1 + lambda1*bf05_01_t1 + lambda2*bf05_06_t1 + lambda3*bf05_11_t1 + lambda4*bf05_16_t1 + lambda5*bf05_21_t1 + lambda6*bf05_26_t1 + lambda7*bf05_31_t1 + lambda8*bf05_36_t1 + lambda9*bf05_41_t1 + lambda10*bf05_46_t1 + lambda11*bf05_51_t1 + lambda12*bf05_56_t1
extra_curr2 =~ NA*bf05_01_t2 + lambda1*bf05_01_t2 + lambda2*bf05_06_t2 + lambda3*bf05_11_t2 + lambda4*bf05_16_t2 + lambda5*bf05_21_t2 + lambda6*bf05_26_t2 + lambda7*bf05_31_t2 + lambda8*bf05_36_t2 + lambda9*bf05_41_t2 + lambda10*bf05_46_t2 + lambda11*bf05_51_t2 + lambda12*bf05_56_t2

# Intercepts
bf05_01_t1 ~ i1*1
bf05_06_t1 ~ i2*1
bf05_11_t1 ~ i3*1
bf05_16_t1 ~ i4*1
bf05_21_t1 ~ i5*1
bf05_26_t1 ~ i6*1
bf05_31_t1 ~ i7*1
bf05_36_t1 ~ i8*1
bf05_41_t1 ~ i9*1
bf05_46_t1 ~ i10*1
bf05_51_t1 ~ i11*1
bf05_56_t1 ~ i12*1

bf05_01_t2 ~ i1*1
bf05_06_t2 ~ i2*1
bf05_11_t2 ~ i3*1
bf05_16_t2 ~ i4*1
bf05_21_t2 ~ i5*1
bf05_26_t2 ~ i6*1
bf05_31_t2 ~ i7*1
bf05_36_t2 ~ i8*1
bf05_41_t2 ~ i9*1
bf05_46_t2 ~ i10*1
bf05_51_t2 ~ i11*1
bf05_56_t2 ~ i12*1

# Unique Variances
bf05_01_t1 ~~ bf05_01_t1
bf05_06_t1 ~~ bf05_06_t1
bf05_11_t1 ~~ bf05_11_t1
bf05_16_t1 ~~ bf05_16_t1
bf05_21_t1 ~~ bf05_21_t1
bf05_26_t1 ~~ bf05_26_t1
bf05_31_t1 ~~ bf05_31_t1
bf05_36_t1 ~~ bf05_36_t1
bf05_41_t1 ~~ bf05_41_t1
bf05_46_t1 ~~ bf05_46_t1
bf05_51_t1 ~~ bf05_51_t1
bf05_56_t1 ~~ bf05_56_t1

bf05_01_t2 ~~ bf05_01_t2
bf05_06_t2 ~~ bf05_06_t2
bf05_11_t2 ~~ bf05_11_t2
bf05_16_t2 ~~ bf05_16_t2
bf05_21_t2 ~~ bf05_21_t2
bf05_26_t2 ~~ bf05_26_t2
bf05_31_t2 ~~ bf05_31_t2
bf05_36_t2 ~~ bf05_36_t2
bf05_41_t2 ~~ bf05_41_t2
bf05_46_t2 ~~ bf05_46_t2
bf05_51_t2 ~~ bf05_51_t2
bf05_56_t2 ~~ bf05_56_t2

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_strong_extra_curr <- cfa(strong_extra_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_extra_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*bf05_01_t1 + lambda1*bf05_01_t1 + lambda2*bf05_06_t1 + lambda3*bf05_11_t1 + lambda4*bf05_16_t1 + lambda5*bf05_21_t1 + lambda6*bf05_26_t1 + lambda7*bf05_31_t1 + lambda8*bf05_36_t1 + lambda9*bf05_41_t1 + lambda10*bf05_46_t1 + lambda11*bf05_51_t1 + lambda12*bf05_56_t1
extra_curr2 =~ NA*bf05_01_t2 + lambda1*bf05_01_t2 + lambda2*bf05_06_t2 + lambda3*bf05_11_t2 + lambda4*bf05_16_t2 + lambda5*bf05_21_t2 + lambda6*bf05_26_t2 + lambda7*bf05_31_t2 + lambda8*bf05_36_t2 + lambda9*bf05_41_t2 + lambda10*bf05_46_t2 + lambda11*bf05_51_t2 + lambda12*bf05_56_t2

# Intercepts
bf05_01_t1 ~ i1*1
bf05_06_t1 ~ i2*1
bf05_11_t1 ~ i3*1
bf05_16_t1 ~ i4*1
bf05_21_t1 ~ i5*1
bf05_26_t1 ~ i6*1
bf05_31_t1 ~ i7*1
bf05_36_t1 ~ i8*1
bf05_41_t1 ~ i9*1
bf05_46_t1 ~ i10*1
bf05_51_t1 ~ i11*1
bf05_56_t1 ~ i12*1

bf05_01_t2 ~ i1*1
bf05_06_t2 ~ i2*1
bf05_11_t2 ~ i3*1
bf05_16_t2 ~ i4*1
bf05_21_t2 ~ i5*1
bf05_26_t2 ~ i6*1
bf05_31_t2 ~ i7*1
bf05_36_t2 ~ i8*1
bf05_41_t2 ~ i9*1
bf05_46_t2 ~ i10*1
bf05_51_t2 ~ i11*1
bf05_56_t2 ~ i12*1

# Unique Variances
bf05_01_t1 ~~ u1*bf05_01_t1
bf05_06_t1 ~~ u2*bf05_06_t1
bf05_11_t1 ~~ u3*bf05_11_t1
bf05_16_t1 ~~ u4*bf05_16_t1
bf05_21_t1 ~~ u5*bf05_21_t1
bf05_26_t1 ~~ u6*bf05_26_t1
bf05_31_t1 ~~ u7*bf05_31_t1
bf05_36_t1 ~~ u8*bf05_36_t1
bf05_41_t1 ~~ u9*bf05_41_t1
bf05_46_t1 ~~ u10*bf05_46_t1
bf05_51_t1 ~~ u11*bf05_51_t1
bf05_56_t1 ~~ u12*bf05_56_t1

bf05_01_t2 ~~ u1*bf05_01_t2
bf05_06_t2 ~~ u2*bf05_06_t2
bf05_11_t2 ~~ u3*bf05_11_t2
bf05_16_t2 ~~ u4*bf05_16_t2
bf05_21_t2 ~~ u5*bf05_21_t2
bf05_26_t2 ~~ u6*bf05_26_t2
bf05_31_t2 ~~ u7*bf05_31_t2
bf05_36_t2 ~~ u8*bf05_36_t2
bf05_41_t2 ~~ u9*bf05_41_t2
bf05_46_t2 ~~ u10*bf05_46_t2
bf05_51_t2 ~~ u11*bf05_51_t2
bf05_56_t2 ~~ u12*bf05_56_t2

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_strict_extra_curr <- cfa(strict_extra_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_extra_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   625    73 3085. 43479. 43803. 0.578 0.536 0.134 0.0971
2 weak         625    62 3090. 43463. 43738. 0.579 0.556 0.131 0.0978
3 strong       625    51 3112. 43463. 43689. 0.577 0.573 0.129 0.0984
4 strict       625    39 3116. 43443. 43616. 0.578 0.592 0.126 0.0987
# chi-square difference test for nested models 
anova(fit_configural_extra_curr, fit_weak_extra_curr)

Chi-Squared Difference Test

                           Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_extra_curr 251 43479 43803 3084.6                         
fit_weak_extra_curr       262 43463 43738 3090.3     5.7311     0      11
                          Pr(>Chisq)
fit_configural_extra_curr           
fit_weak_extra_curr           0.8907
anova(fit_weak_extra_curr, fit_strong_extra_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff   RMSEA Df diff
fit_weak_extra_curr   262 43463 43738 3090.3                           
fit_strong_extra_curr 273 43463 43689 3112.1     21.803 0.03964      11
                      Pr(>Chisq)  
fit_weak_extra_curr               
fit_strong_extra_curr    0.02595 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit_strong_extra_curr, fit_strict_extra_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_strong_extra_curr 273 43463 43689 3112.1                         
fit_strict_extra_curr 285 43443 43616 3116.1     3.9995     0      12
                      Pr(>Chisq)
fit_strong_extra_curr           
fit_strict_extra_curr     0.9834

Very bad model fit across all stage of measurement invariance. Chi^2 tests indicate that only weak measurement invariance is given.

3.5.2 Extraversion: ideal-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*bf06_01_t1 + lambda1*bf06_01_t1 + bf06_06_t1 + bf06_11_t1 + bf06_16_t1 + bf06_21_t1 + bf06_26_t1 + bf06_31_t1 + bf06_36_t1 + bf06_41_t1 + bf06_46_t1 + bf06_51_t1 + bf06_56_t1
extra_ideal2 =~ NA*bf06_01_t2 + lambda1*bf06_01_t2 + bf06_06_t2 + bf06_11_t2 + bf06_16_t2 + bf06_21_t2 + bf06_26_t2 + bf06_31_t2 + bf06_36_t2 + bf06_41_t2 + bf06_46_t2 + bf06_51_t2 + bf06_56_t2

# Intercepts
bf06_01_t1 ~ i1*1
bf06_06_t1 ~ 1
bf06_11_t1 ~ 1
bf06_16_t1 ~ 1
bf06_21_t1 ~ 1
bf06_26_t1 ~ 1
bf06_31_t1 ~ 1
bf06_36_t1 ~ 1
bf06_41_t1 ~ 1
bf06_46_t1 ~ 1
bf06_51_t1 ~ 1
bf06_56_t1 ~ 1

bf06_01_t2 ~ i1*1
bf06_06_t2 ~ 1
bf06_11_t2 ~ 1
bf06_16_t2 ~ 1
bf06_21_t2 ~ 1
bf06_26_t2 ~ 1
bf06_31_t2 ~ 1
bf06_36_t2 ~ 1
bf06_41_t2 ~ 1
bf06_46_t2 ~ 1
bf06_51_t2 ~ 1
bf06_56_t2 ~ 1

# Unique Variances
bf06_01_t1 ~~ bf06_01_t1
bf06_06_t1 ~~ bf06_06_t1
bf06_11_t1 ~~ bf06_11_t1
bf06_16_t1 ~~ bf06_16_t1
bf06_21_t1 ~~ bf06_21_t1
bf06_26_t1 ~~ bf06_26_t1
bf06_31_t1 ~~ bf06_31_t1
bf06_36_t1 ~~ bf06_36_t1
bf06_41_t1 ~~ bf06_41_t1
bf06_46_t1 ~~ bf06_46_t1
bf06_51_t1 ~~ bf06_51_t1
bf06_56_t1 ~~ bf06_56_t1

bf06_01_t2 ~~ bf06_01_t2
bf06_06_t2 ~~ bf06_06_t2
bf06_11_t2 ~~ bf06_11_t2
bf06_16_t2 ~~ bf06_16_t2
bf06_21_t2 ~~ bf06_21_t2
bf06_26_t2 ~~ bf06_26_t2
bf06_31_t2 ~~ bf06_31_t2
bf06_36_t2 ~~ bf06_36_t2
bf06_41_t2 ~~ bf06_41_t2
bf06_46_t2 ~~ bf06_46_t2
bf06_51_t2 ~~ bf06_51_t2
bf06_56_t2 ~~ bf06_56_t2

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_configural_extra_ideal <- cfa(configural_extra_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_extra_ideal, fit.measures = TRUE)

# Weak invariance model
weak_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*bf06_01_t1 + lambda1*bf06_01_t1 + lambda2*bf06_06_t1 + lambda3*bf06_11_t1 + lambda4*bf06_16_t1 + lambda5*bf06_21_t1 + lambda6*bf06_26_t1 + lambda7*bf06_31_t1 + lambda8*bf06_36_t1 + lambda9*bf06_41_t1 + lambda10*bf06_46_t1 + lambda11*bf06_51_t1 + lambda12*bf06_56_t1
extra_ideal2 =~ NA*bf06_01_t2 + lambda1*bf06_01_t2 + lambda2*bf06_06_t2 + lambda3*bf06_11_t2 + lambda4*bf06_16_t2 + lambda5*bf06_21_t2 + lambda6*bf06_26_t2 + lambda7*bf06_31_t2 + lambda8*bf06_36_t2 + lambda9*bf06_41_t2 + lambda10*bf06_46_t2 + lambda11*bf06_51_t2 + lambda12*bf06_56_t2

# Intercepts
bf06_01_t1 ~ i1*1
bf06_06_t1 ~ 1
bf06_11_t1 ~ 1
bf06_16_t1 ~ 1
bf06_21_t1 ~ 1
bf06_26_t1 ~ 1
bf06_31_t1 ~ 1
bf06_36_t1 ~ 1
bf06_41_t1 ~ 1
bf06_46_t1 ~ 1
bf06_51_t1 ~ 1
bf06_56_t1 ~ 1

bf06_01_t2 ~ i1*1
bf06_06_t2 ~ 1
bf06_11_t2 ~ 1
bf06_16_t2 ~ 1
bf06_21_t2 ~ 1
bf06_26_t2 ~ 1
bf06_31_t2 ~ 1
bf06_36_t2 ~ 1
bf06_41_t2 ~ 1
bf06_46_t2 ~ 1
bf06_51_t2 ~ 1
bf06_56_t2 ~ 1

# Unique Variances
bf06_01_t1 ~~ bf06_01_t1
bf06_06_t1 ~~ bf06_06_t1
bf06_11_t1 ~~ bf06_11_t1
bf06_16_t1 ~~ bf06_16_t1
bf06_21_t1 ~~ bf06_21_t1
bf06_26_t1 ~~ bf06_26_t1
bf06_31_t1 ~~ bf06_31_t1
bf06_36_t1 ~~ bf06_36_t1
bf06_41_t1 ~~ bf06_41_t1
bf06_46_t1 ~~ bf06_46_t1
bf06_51_t1 ~~ bf06_51_t1
bf06_56_t1 ~~ bf06_56_t1

bf06_01_t2 ~~ bf06_01_t2
bf06_06_t2 ~~ bf06_06_t2
bf06_11_t2 ~~ bf06_11_t2
bf06_16_t2 ~~ bf06_16_t2
bf06_21_t2 ~~ bf06_21_t2
bf06_26_t2 ~~ bf06_26_t2
bf06_31_t2 ~~ bf06_31_t2
bf06_36_t2 ~~ bf06_36_t2
bf06_41_t2 ~~ bf06_41_t2
bf06_46_t2 ~~ bf06_46_t2
bf06_51_t2 ~~ bf06_51_t2
bf06_56_t2 ~~ bf06_56_t2

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_weak_extra_ideal <- cfa(weak_extra_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_extra_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*bf06_01_t1 + lambda1*bf06_01_t1 + lambda2*bf06_06_t1 + lambda3*bf06_11_t1 + lambda4*bf06_16_t1 + lambda5*bf06_21_t1 + lambda6*bf06_26_t1 + lambda7*bf06_31_t1 + lambda8*bf06_36_t1 + lambda9*bf06_41_t1 + lambda10*bf06_46_t1 + lambda11*bf06_51_t1 + lambda12*bf06_56_t1
extra_ideal2 =~ NA*bf06_01_t2 + lambda1*bf06_01_t2 + lambda2*bf06_06_t2 + lambda3*bf06_11_t2 + lambda4*bf06_16_t2 + lambda5*bf06_21_t2 + lambda6*bf06_26_t2 + lambda7*bf06_31_t2 + lambda8*bf06_36_t2 + lambda9*bf06_41_t2 + lambda10*bf06_46_t2 + lambda11*bf06_51_t2 + lambda12*bf06_56_t2

# Intercepts
bf06_01_t1 ~ i1*1
bf06_06_t1 ~ i2*1
bf06_11_t1 ~ i3*1
bf06_16_t1 ~ i4*1
bf06_21_t1 ~ i5*1
bf06_26_t1 ~ i6*1
bf06_31_t1 ~ i7*1
bf06_36_t1 ~ i8*1
bf06_41_t1 ~ i9*1
bf06_46_t1 ~ i10*1
bf06_51_t1 ~ i11*1
bf06_56_t1 ~ i12*1

bf06_01_t2 ~ i1*1
bf06_06_t2 ~ i2*1
bf06_11_t2 ~ i3*1
bf06_16_t2 ~ i4*1
bf06_21_t2 ~ i5*1
bf06_26_t2 ~ i6*1
bf06_31_t2 ~ i7*1
bf06_36_t2 ~ i8*1
bf06_41_t2 ~ i9*1
bf06_46_t2 ~ i10*1
bf06_51_t2 ~ i11*1
bf06_56_t2 ~ i12*1

# Unique Variances
bf06_01_t1 ~~ bf06_01_t1
bf06_06_t1 ~~ bf06_06_t1
bf06_11_t1 ~~ bf06_11_t1
bf06_16_t1 ~~ bf06_16_t1
bf06_21_t1 ~~ bf06_21_t1
bf06_26_t1 ~~ bf06_26_t1
bf06_31_t1 ~~ bf06_31_t1
bf06_36_t1 ~~ bf06_36_t1
bf06_41_t1 ~~ bf06_41_t1
bf06_46_t1 ~~ bf06_46_t1
bf06_51_t1 ~~ bf06_51_t1
bf06_56_t1 ~~ bf06_56_t1

bf06_01_t2 ~~ bf06_01_t2
bf06_06_t2 ~~ bf06_06_t2
bf06_11_t2 ~~ bf06_11_t2
bf06_16_t2 ~~ bf06_16_t2
bf06_21_t2 ~~ bf06_21_t2
bf06_26_t2 ~~ bf06_26_t2
bf06_31_t2 ~~ bf06_31_t2
bf06_36_t2 ~~ bf06_36_t2
bf06_41_t2 ~~ bf06_41_t2
bf06_46_t2 ~~ bf06_46_t2
bf06_51_t2 ~~ bf06_51_t2
bf06_56_t2 ~~ bf06_56_t2

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_strong_extra_ideal <- cfa(strong_extra_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_extra_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*bf06_01_t1 + lambda1*bf06_01_t1 + lambda2*bf06_06_t1 + lambda3*bf06_11_t1 + lambda4*bf06_16_t1 + lambda5*bf06_21_t1 + lambda6*bf06_26_t1 + lambda7*bf06_31_t1 + lambda8*bf06_36_t1 + lambda9*bf06_41_t1 + lambda10*bf06_46_t1 + lambda11*bf06_51_t1 + lambda12*bf06_56_t1
extra_ideal2 =~ NA*bf06_01_t2 + lambda1*bf06_01_t2 + lambda2*bf06_06_t2 + lambda3*bf06_11_t2 + lambda4*bf06_16_t2 + lambda5*bf06_21_t2 + lambda6*bf06_26_t2 + lambda7*bf06_31_t2 + lambda8*bf06_36_t2 + lambda9*bf06_41_t2 + lambda10*bf06_46_t2 + lambda11*bf06_51_t2 + lambda12*bf06_56_t2

# Intercepts
bf06_01_t1 ~ i1*1
bf06_06_t1 ~ i2*1
bf06_11_t1 ~ i3*1
bf06_16_t1 ~ i4*1
bf06_21_t1 ~ i5*1
bf06_26_t1 ~ i6*1
bf06_31_t1 ~ i7*1
bf06_36_t1 ~ i8*1
bf06_41_t1 ~ i9*1
bf06_46_t1 ~ i10*1
bf06_51_t1 ~ i11*1
bf06_56_t1 ~ i12*1

bf06_01_t2 ~ i1*1
bf06_06_t2 ~ i2*1
bf06_11_t2 ~ i3*1
bf06_16_t2 ~ i4*1
bf06_21_t2 ~ i5*1
bf06_26_t2 ~ i6*1
bf06_31_t2 ~ i7*1
bf06_36_t2 ~ i8*1
bf06_41_t2 ~ i9*1
bf06_46_t2 ~ i10*1
bf06_51_t2 ~ i11*1
bf06_56_t2 ~ i12*1

# Unique Variances
bf06_01_t1 ~~ u1*bf06_01_t1
bf06_06_t1 ~~ u2*bf06_06_t1
bf06_11_t1 ~~ u3*bf06_11_t1
bf06_16_t1 ~~ u4*bf06_16_t1
bf06_21_t1 ~~ u5*bf06_21_t1
bf06_26_t1 ~~ u6*bf06_26_t1
bf06_31_t1 ~~ u7*bf06_31_t1
bf06_36_t1 ~~ u8*bf06_36_t1
bf06_41_t1 ~~ u9*bf06_41_t1
bf06_46_t1 ~~ u10*bf06_46_t1
bf06_51_t1 ~~ u11*bf06_51_t1
bf06_56_t1 ~~ u12*bf06_56_t1

bf06_01_t2 ~~ u1*bf06_01_t2
bf06_06_t2 ~~ u2*bf06_06_t2
bf06_11_t2 ~~ u3*bf06_11_t2
bf06_16_t2 ~~ u4*bf06_16_t2
bf06_21_t2 ~~ u5*bf06_21_t2
bf06_26_t2 ~~ u6*bf06_26_t2
bf06_31_t2 ~~ u7*bf06_31_t2
bf06_36_t2 ~~ u8*bf06_36_t2
bf06_41_t2 ~~ u9*bf06_41_t2
bf06_46_t2 ~~ u10*bf06_46_t2
bf06_51_t2 ~~ u11*bf06_51_t2
bf06_56_t2 ~~ u12*bf06_56_t2

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_strict_extra_ideal <- cfa(strict_extra_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_extra_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   625    73 1766. 40508. 40832. 0.538 0.492 0.0983 0.0832
2 weak         625    62 1772. 40493. 40768. 0.539 0.514 0.0960 0.0839
3 strong       625    51 1781. 40479. 40706. 0.540 0.535 0.0940 0.0841
4 strict       625    39 1790. 40464. 40637. 0.541 0.555 0.0919 0.0855
# chi-square difference test for nested models 
anova(fit_configural_extra_ideal, fit_weak_extra_ideal)

Chi-Squared Difference Test

                            Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_extra_ideal 251 40508 40832 1765.9                         
fit_weak_extra_ideal       262 40493 40768 1772.1     6.1838     0      11
                           Pr(>Chisq)
fit_configural_extra_ideal           
fit_weak_extra_ideal           0.8608
anova(fit_weak_extra_ideal, fit_strong_extra_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_weak_extra_ideal   262 40493 40768 1772.1                         
fit_strong_extra_ideal 273 40479 40706 1780.7     8.5819     0      11
                       Pr(>Chisq)
fit_weak_extra_ideal             
fit_strong_extra_ideal     0.6604
anova(fit_strong_extra_ideal, fit_strict_extra_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_strong_extra_ideal 273 40479 40706 1780.7                         
fit_strict_extra_ideal 285 40464 40637 1789.8      9.063     0      12
                       Pr(>Chisq)
fit_strong_extra_ideal           
fit_strict_extra_ideal     0.6975

Very bad model fit across all stage of measurement invariance. Chi^2 tests indicate that strict measurement invariance is given.

3.5.3 Agreeableness: current-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*bf05_02_t1 + lambda1*bf05_02_t1 + bf05_07_t1 + bf05_12_t1 + bf05_17_t1 + bf05_22_t1 + bf05_27_t1 + bf05_32_t1 + bf05_37_t1 + bf05_42_t1 + bf05_47_t1 + bf05_52_t1 + bf05_57_t1
agree_curr2 =~ NA*bf05_02_t2 + lambda1*bf05_02_t2 + bf05_07_t2 + bf05_12_t2 + bf05_17_t2 + bf05_22_t2 + bf05_27_t2 + bf05_32_t2 + bf05_37_t2 + bf05_42_t2 + bf05_47_t2 + bf05_52_t2 + bf05_57_t2

# Intercepts
bf05_02_t1 ~ i1*1
bf05_07_t1 ~ 1
bf05_12_t1 ~ 1
bf05_17_t1 ~ 1
bf05_22_t1 ~ 1
bf05_27_t1 ~ 1
bf05_32_t1 ~ 1
bf05_37_t1 ~ 1
bf05_42_t1 ~ 1
bf05_47_t1 ~ 1
bf05_52_t1 ~ 1
bf05_57_t1 ~ 1

bf05_02_t2 ~ i1*1
bf05_07_t2 ~ 1
bf05_12_t2 ~ 1
bf05_17_t2 ~ 1
bf05_22_t2 ~ 1
bf05_27_t2 ~ 1
bf05_32_t2 ~ 1
bf05_37_t2 ~ 1
bf05_42_t2 ~ 1
bf05_47_t2 ~ 1
bf05_52_t2 ~ 1
bf05_57_t2 ~ 1

# Unique Variances
bf05_02_t1 ~~ bf05_02_t1
bf05_07_t1 ~~ bf05_07_t1
bf05_12_t1 ~~ bf05_12_t1
bf05_17_t1 ~~ bf05_17_t1
bf05_22_t1 ~~ bf05_22_t1
bf05_27_t1 ~~ bf05_27_t1
bf05_32_t1 ~~ bf05_32_t1
bf05_37_t1 ~~ bf05_37_t1
bf05_42_t1 ~~ bf05_42_t1
bf05_47_t1 ~~ bf05_47_t1
bf05_52_t1 ~~ bf05_52_t1
bf05_57_t1 ~~ bf05_57_t1

bf05_02_t2 ~~ bf05_02_t2
bf05_07_t2 ~~ bf05_07_t2
bf05_12_t2 ~~ bf05_12_t2
bf05_17_t2 ~~ bf05_17_t2
bf05_22_t2 ~~ bf05_22_t2
bf05_27_t2 ~~ bf05_27_t2
bf05_32_t2 ~~ bf05_32_t2
bf05_37_t2 ~~ bf05_37_t2
bf05_42_t2 ~~ bf05_42_t2
bf05_47_t2 ~~ bf05_47_t2
bf05_52_t2 ~~ bf05_52_t2
bf05_57_t2 ~~ bf05_57_t2

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_configural_agree_curr <- cfa(configural_agree_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_agree_curr, fit.measures = TRUE)

# Weak invariance model
weak_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*bf05_02_t1 + lambda1*bf05_02_t1 + lambda2*bf05_07_t1 + lambda3*bf05_12_t1 + lambda4*bf05_17_t1 + lambda5*bf05_22_t1 + lambda6*bf05_27_t1 + lambda7*bf05_32_t1 + lambda8*bf05_37_t1 + lambda9*bf05_42_t1 + lambda10*bf05_47_t1 + lambda11*bf05_52_t1 + lambda12*bf05_57_t1
agree_curr2 =~ NA*bf05_02_t2 + lambda1*bf05_02_t2 + lambda2*bf05_07_t2 + lambda3*bf05_12_t2 + lambda4*bf05_17_t2 + lambda5*bf05_22_t2 + lambda6*bf05_27_t2 + lambda7*bf05_32_t2 + lambda8*bf05_37_t2 + lambda9*bf05_42_t2 + lambda10*bf05_47_t2 + lambda11*bf05_52_t2 + lambda12*bf05_57_t2

# Intercepts
bf05_02_t1 ~ i1*1
bf05_07_t1 ~ 1
bf05_12_t1 ~ 1
bf05_17_t1 ~ 1
bf05_22_t1 ~ 1
bf05_27_t1 ~ 1
bf05_32_t1 ~ 1
bf05_37_t1 ~ 1
bf05_42_t1 ~ 1
bf05_47_t1 ~ 1
bf05_52_t1 ~ 1
bf05_57_t1 ~ 1

bf05_02_t2 ~ i1*1
bf05_07_t2 ~ 1
bf05_12_t2 ~ 1
bf05_17_t2 ~ 1
bf05_22_t2 ~ 1
bf05_27_t2 ~ 1
bf05_32_t2 ~ 1
bf05_37_t2 ~ 1
bf05_42_t2 ~ 1
bf05_47_t2 ~ 1
bf05_52_t2 ~ 1
bf05_57_t2 ~ 1

# Unique Variances
bf05_02_t1 ~~ bf05_02_t1
bf05_07_t1 ~~ bf05_07_t1
bf05_12_t1 ~~ bf05_12_t1
bf05_17_t1 ~~ bf05_17_t1
bf05_22_t1 ~~ bf05_22_t1
bf05_27_t1 ~~ bf05_27_t1
bf05_32_t1 ~~ bf05_32_t1
bf05_37_t1 ~~ bf05_37_t1
bf05_42_t1 ~~ bf05_42_t1
bf05_47_t1 ~~ bf05_47_t1
bf05_52_t1 ~~ bf05_52_t1
bf05_57_t1 ~~ bf05_57_t1

bf05_02_t2 ~~ bf05_02_t2
bf05_07_t2 ~~ bf05_07_t2
bf05_12_t2 ~~ bf05_12_t2
bf05_17_t2 ~~ bf05_17_t2
bf05_22_t2 ~~ bf05_22_t2
bf05_27_t2 ~~ bf05_27_t2
bf05_32_t2 ~~ bf05_32_t2
bf05_37_t2 ~~ bf05_37_t2
bf05_42_t2 ~~ bf05_42_t2
bf05_47_t2 ~~ bf05_47_t2
bf05_52_t2 ~~ bf05_52_t2
bf05_57_t2 ~~ bf05_57_t2

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_weak_agree_curr <- cfa(weak_agree_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_agree_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*bf05_02_t1 + lambda1*bf05_02_t1 + lambda2*bf05_07_t1 + lambda3*bf05_12_t1 + lambda4*bf05_17_t1 + lambda5*bf05_22_t1 + lambda6*bf05_27_t1 + lambda7*bf05_32_t1 + lambda8*bf05_37_t1 + lambda9*bf05_42_t1 + lambda10*bf05_47_t1 + lambda11*bf05_52_t1 + lambda12*bf05_57_t1
agree_curr2 =~ NA*bf05_02_t2 + lambda1*bf05_02_t2 + lambda2*bf05_07_t2 + lambda3*bf05_12_t2 + lambda4*bf05_17_t2 + lambda5*bf05_22_t2 + lambda6*bf05_27_t2 + lambda7*bf05_32_t2 + lambda8*bf05_37_t2 + lambda9*bf05_42_t2 + lambda10*bf05_47_t2 + lambda11*bf05_52_t2 + lambda12*bf05_57_t2

# Intercepts
bf05_02_t1 ~ i1*1
bf05_07_t1 ~ i2*1
bf05_12_t1 ~ i3*1
bf05_17_t1 ~ i4*1
bf05_22_t1 ~ i5*1
bf05_27_t1 ~ i6*1
bf05_32_t1 ~ i7*1
bf05_37_t1 ~ i8*1
bf05_42_t1 ~ i9*1
bf05_47_t1 ~ i10*1
bf05_52_t1 ~ i11*1
bf05_57_t1 ~ i12*1

bf05_02_t2 ~ i1*1
bf05_07_t2 ~ i2*1
bf05_12_t2 ~ i3*1
bf05_17_t2 ~ i4*1
bf05_22_t2 ~ i5*1
bf05_27_t2 ~ i6*1
bf05_32_t2 ~ i7*1
bf05_37_t2 ~ i8*1
bf05_42_t2 ~ i9*1
bf05_47_t2 ~ i10*1
bf05_52_t2 ~ i11*1
bf05_57_t2 ~ i12*1

# Unique Variances
bf05_02_t1 ~~ bf05_02_t1
bf05_07_t1 ~~ bf05_07_t1
bf05_12_t1 ~~ bf05_12_t1
bf05_17_t1 ~~ bf05_17_t1
bf05_22_t1 ~~ bf05_22_t1
bf05_27_t1 ~~ bf05_27_t1
bf05_32_t1 ~~ bf05_32_t1
bf05_37_t1 ~~ bf05_37_t1
bf05_42_t1 ~~ bf05_42_t1
bf05_47_t1 ~~ bf05_47_t1
bf05_52_t1 ~~ bf05_52_t1
bf05_57_t1 ~~ bf05_57_t1

bf05_02_t2 ~~ bf05_02_t2
bf05_07_t2 ~~ bf05_07_t2
bf05_12_t2 ~~ bf05_12_t2
bf05_17_t2 ~~ bf05_17_t2
bf05_22_t2 ~~ bf05_22_t2
bf05_27_t2 ~~ bf05_27_t2
bf05_32_t2 ~~ bf05_32_t2
bf05_37_t2 ~~ bf05_37_t2
bf05_42_t2 ~~ bf05_42_t2
bf05_47_t2 ~~ bf05_47_t2
bf05_52_t2 ~~ bf05_52_t2
bf05_57_t2 ~~ bf05_57_t2

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_strong_agree_curr <- cfa(strong_agree_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_agree_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*bf05_02_t1 + lambda1*bf05_02_t1 + lambda2*bf05_07_t1 + lambda3*bf05_12_t1 + lambda4*bf05_17_t1 + lambda5*bf05_22_t1 + lambda6*bf05_27_t1 + lambda7*bf05_32_t1 + lambda8*bf05_37_t1 + lambda9*bf05_42_t1 + lambda10*bf05_47_t1 + lambda11*bf05_52_t1 + lambda12*bf05_57_t1
agree_curr2 =~ NA*bf05_02_t2 + lambda1*bf05_02_t2 + lambda2*bf05_07_t2 + lambda3*bf05_12_t2 + lambda4*bf05_17_t2 + lambda5*bf05_22_t2 + lambda6*bf05_27_t2 + lambda7*bf05_32_t2 + lambda8*bf05_37_t2 + lambda9*bf05_42_t2 + lambda10*bf05_47_t2 + lambda11*bf05_52_t2 + lambda12*bf05_57_t2

# Intercepts
bf05_02_t1 ~ i1*1
bf05_07_t1 ~ i2*1
bf05_12_t1 ~ i3*1
bf05_17_t1 ~ i4*1
bf05_22_t1 ~ i5*1
bf05_27_t1 ~ i6*1
bf05_32_t1 ~ i7*1
bf05_37_t1 ~ i8*1
bf05_42_t1 ~ i9*1
bf05_47_t1 ~ i10*1
bf05_52_t1 ~ i11*1
bf05_57_t1 ~ i12*1

bf05_02_t2 ~ i1*1
bf05_07_t2 ~ i2*1
bf05_12_t2 ~ i3*1
bf05_17_t2 ~ i4*1
bf05_22_t2 ~ i5*1
bf05_27_t2 ~ i6*1
bf05_32_t2 ~ i7*1
bf05_37_t2 ~ i8*1
bf05_42_t2 ~ i9*1
bf05_47_t2 ~ i10*1
bf05_52_t2 ~ i11*1
bf05_57_t2 ~ i12*1

# Unique Variances
bf05_02_t1 ~~ u1*bf05_02_t1
bf05_07_t1 ~~ u2*bf05_07_t1
bf05_12_t1 ~~ u3*bf05_12_t1
bf05_17_t1 ~~ u4*bf05_17_t1
bf05_22_t1 ~~ u5*bf05_22_t1
bf05_27_t1 ~~ u6*bf05_27_t1
bf05_32_t1 ~~ u7*bf05_32_t1
bf05_37_t1 ~~ u8*bf05_37_t1
bf05_42_t1 ~~ u9*bf05_42_t1
bf05_47_t1 ~~ u10*bf05_47_t1
bf05_52_t1 ~~ u11*bf05_52_t1
bf05_57_t1 ~~ u12*bf05_57_t1

bf05_02_t2 ~~ u1*bf05_02_t2
bf05_07_t2 ~~ u2*bf05_07_t2
bf05_12_t2 ~~ u3*bf05_12_t2
bf05_17_t2 ~~ u4*bf05_17_t2
bf05_22_t2 ~~ u5*bf05_22_t2
bf05_27_t2 ~~ u6*bf05_27_t2
bf05_32_t2 ~~ u7*bf05_32_t2
bf05_37_t2 ~~ u8*bf05_37_t2
bf05_42_t2 ~~ u9*bf05_42_t2
bf05_47_t2 ~~ u10*bf05_47_t2
bf05_52_t2 ~~ u11*bf05_52_t2
bf05_57_t2 ~~ u12*bf05_57_t2

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_strict_agree_curr <- cfa(strict_agree_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_agree_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   625    73 2302. 41142. 41465. 0.607 0.568 0.114 0.0881
2 weak         625    62 2308. 41126. 41401. 0.608 0.588 0.112 0.0894
3 strong       625    51 2321. 41116. 41342. 0.608 0.604 0.110 0.0898
4 strict       625    39 2355. 41127. 41300. 0.604 0.616 0.108 0.0950
# chi-square difference test for nested models 
anova(fit_configural_agree_curr, fit_weak_agree_curr)

Chi-Squared Difference Test

                           Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_agree_curr 251 41142 41465 2302.4                         
fit_weak_agree_curr       262 41126 41401 2308.4     6.0368     0      11
                          Pr(>Chisq)
fit_configural_agree_curr           
fit_weak_agree_curr           0.8709
anova(fit_weak_agree_curr, fit_strong_agree_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_weak_agree_curr   262 41126 41401 2308.4                            
fit_strong_agree_curr 273 41116 41342 2320.9     12.556 0.015044      11
                      Pr(>Chisq)
fit_weak_agree_curr             
fit_strong_agree_curr     0.3233
anova(fit_strong_agree_curr, fit_strict_agree_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff  RMSEA Df diff
fit_strong_agree_curr 273 41116 41342 2320.9                          
fit_strict_agree_curr 285 41127 41300 2355.5     34.523 0.0548      12
                      Pr(>Chisq)    
fit_strong_agree_curr               
fit_strict_agree_curr  0.0005576 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Very bad model fit across all stage of measurement invariance. Chi^2 tests indicate that strong measurement invariance is given.

3.5.4 Agreeableness: ideal-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*bf06_02_t1 + lambda1*bf06_02_t1 + bf06_07_t1 + bf06_12_t1 + bf06_17_t1 + bf06_22_t1 + bf06_27_t1 + bf06_32_t1 + bf06_37_t1 + bf06_42_t1 + bf06_47_t1 + bf06_52_t1 + bf06_57_t1
agree_ideal2 =~ NA*bf06_02_t2 + lambda1*bf06_02_t2 + bf06_07_t2 + bf06_12_t2 + bf06_17_t2 + bf06_22_t2 + bf06_27_t2 + bf06_32_t2 + bf06_37_t2 + bf06_42_t2 + bf06_47_t2 + bf06_52_t2 + bf06_57_t2

# Intercepts
bf06_02_t1 ~ i1*1
bf06_07_t1 ~ 1
bf06_12_t1 ~ 1
bf06_17_t1 ~ 1
bf06_22_t1 ~ 1
bf06_27_t1 ~ 1
bf06_32_t1 ~ 1
bf06_37_t1 ~ 1
bf06_42_t1 ~ 1
bf06_47_t1 ~ 1
bf06_52_t1 ~ 1
bf06_57_t1 ~ 1

bf06_02_t2 ~ i1*1
bf06_07_t2 ~ 1
bf06_12_t2 ~ 1
bf06_17_t2 ~ 1
bf06_22_t2 ~ 1
bf06_27_t2 ~ 1
bf06_32_t2 ~ 1
bf06_37_t2 ~ 1
bf06_42_t2 ~ 1
bf06_47_t2 ~ 1
bf06_52_t2 ~ 1
bf06_57_t2 ~ 1

# Unique Variances
bf06_02_t1 ~~ bf06_02_t1
bf06_07_t1 ~~ bf06_07_t1
bf06_12_t1 ~~ bf06_12_t1
bf06_17_t1 ~~ bf06_17_t1
bf06_22_t1 ~~ bf06_22_t1
bf06_27_t1 ~~ bf06_27_t1
bf06_32_t1 ~~ bf06_32_t1
bf06_37_t1 ~~ bf06_37_t1
bf06_42_t1 ~~ bf06_42_t1
bf06_47_t1 ~~ bf06_47_t1
bf06_52_t1 ~~ bf06_52_t1
bf06_57_t1 ~~ bf06_57_t1

bf06_02_t2 ~~ bf06_02_t2
bf06_07_t2 ~~ bf06_07_t2
bf06_12_t2 ~~ bf06_12_t2
bf06_17_t2 ~~ bf06_17_t2
bf06_22_t2 ~~ bf06_22_t2
bf06_27_t2 ~~ bf06_27_t2
bf06_32_t2 ~~ bf06_32_t2
bf06_37_t2 ~~ bf06_37_t2
bf06_42_t2 ~~ bf06_42_t2
bf06_47_t2 ~~ bf06_47_t2
bf06_52_t2 ~~ bf06_52_t2
bf06_57_t2 ~~ bf06_57_t2

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_configural_agree_ideal <- cfa(configural_agree_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_agree_ideal, fit.measures = TRUE)

# Weak invariance model
weak_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*bf06_02_t1 + lambda1*bf06_02_t1 + lambda2*bf06_07_t1 + lambda3*bf06_12_t1 + lambda4*bf06_17_t1 + lambda5*bf06_22_t1 + lambda6*bf06_27_t1 + lambda7*bf06_32_t1 + lambda8*bf06_37_t1 + lambda9*bf06_42_t1 + lambda10*bf06_47_t1 + lambda11*bf06_52_t1 + lambda12*bf06_57_t1
agree_ideal2 =~ NA*bf06_02_t2 + lambda1*bf06_02_t2 + lambda2*bf06_07_t2 + lambda3*bf06_12_t2 + lambda4*bf06_17_t2 + lambda5*bf06_22_t2 + lambda6*bf06_27_t2 + lambda7*bf06_32_t2 + lambda8*bf06_37_t2 + lambda9*bf06_42_t2 + lambda10*bf06_47_t2 + lambda11*bf06_52_t2 + lambda12*bf06_57_t2

# Intercepts
bf06_02_t1 ~ i1*1
bf06_07_t1 ~ 1
bf06_12_t1 ~ 1
bf06_17_t1 ~ 1
bf06_22_t1 ~ 1
bf06_27_t1 ~ 1
bf06_32_t1 ~ 1
bf06_37_t1 ~ 1
bf06_42_t1 ~ 1
bf06_47_t1 ~ 1
bf06_52_t1 ~ 1
bf06_57_t1 ~ 1

bf06_02_t2 ~ i1*1
bf06_07_t2 ~ 1
bf06_12_t2 ~ 1
bf06_17_t2 ~ 1
bf06_22_t2 ~ 1
bf06_27_t2 ~ 1
bf06_32_t2 ~ 1
bf06_37_t2 ~ 1
bf06_42_t2 ~ 1
bf06_47_t2 ~ 1
bf06_52_t2 ~ 1
bf06_57_t2 ~ 1

# Unique Variances
bf06_02_t1 ~~ bf06_02_t1
bf06_07_t1 ~~ bf06_07_t1
bf06_12_t1 ~~ bf06_12_t1
bf06_17_t1 ~~ bf06_17_t1
bf06_22_t1 ~~ bf06_22_t1
bf06_27_t1 ~~ bf06_27_t1
bf06_32_t1 ~~ bf06_32_t1
bf06_37_t1 ~~ bf06_37_t1
bf06_42_t1 ~~ bf06_42_t1
bf06_47_t1 ~~ bf06_47_t1
bf06_52_t1 ~~ bf06_52_t1
bf06_57_t1 ~~ bf06_57_t1

bf06_02_t2 ~~ bf06_02_t2
bf06_07_t2 ~~ bf06_07_t2
bf06_12_t2 ~~ bf06_12_t2
bf06_17_t2 ~~ bf06_17_t2
bf06_22_t2 ~~ bf06_22_t2
bf06_27_t2 ~~ bf06_27_t2
bf06_32_t2 ~~ bf06_32_t2
bf06_37_t2 ~~ bf06_37_t2
bf06_42_t2 ~~ bf06_42_t2
bf06_47_t2 ~~ bf06_47_t2
bf06_52_t2 ~~ bf06_52_t2
bf06_57_t2 ~~ bf06_57_t2

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_weak_agree_ideal <- cfa(weak_agree_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_agree_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*bf06_02_t1 + lambda1*bf06_02_t1 + lambda2*bf06_07_t1 + lambda3*bf06_12_t1 + lambda4*bf06_17_t1 + lambda5*bf06_22_t1 + lambda6*bf06_27_t1 + lambda7*bf06_32_t1 + lambda8*bf06_37_t1 + lambda9*bf06_42_t1 + lambda10*bf06_47_t1 + lambda11*bf06_52_t1 + lambda12*bf06_57_t1
agree_ideal2 =~ NA*bf06_02_t2 + lambda1*bf06_02_t2 + lambda2*bf06_07_t2 + lambda3*bf06_12_t2 + lambda4*bf06_17_t2 + lambda5*bf06_22_t2 + lambda6*bf06_27_t2 + lambda7*bf06_32_t2 + lambda8*bf06_37_t2 + lambda9*bf06_42_t2 + lambda10*bf06_47_t2 + lambda11*bf06_52_t2 + lambda12*bf06_57_t2

# Intercepts
bf06_02_t1 ~ i1*1
bf06_07_t1 ~ i2*1
bf06_12_t1 ~ i3*1
bf06_17_t1 ~ i4*1
bf06_22_t1 ~ i5*1
bf06_27_t1 ~ i6*1
bf06_32_t1 ~ i7*1
bf06_37_t1 ~ i8*1
bf06_42_t1 ~ i9*1
bf06_47_t1 ~ i10*1
bf06_52_t1 ~ i11*1
bf06_57_t1 ~ i12*1

bf06_02_t2 ~ i1*1
bf06_07_t2 ~ i2*1
bf06_12_t2 ~ i3*1
bf06_17_t2 ~ i4*1
bf06_22_t2 ~ i5*1
bf06_27_t2 ~ i6*1
bf06_32_t2 ~ i7*1
bf06_37_t2 ~ i8*1
bf06_42_t2 ~ i9*1
bf06_47_t2 ~ i10*1
bf06_52_t2 ~ i11*1
bf06_57_t2 ~ i12*1

# Unique Variances
bf06_02_t1 ~~ bf06_02_t1
bf06_07_t1 ~~ bf06_07_t1
bf06_12_t1 ~~ bf06_12_t1
bf06_17_t1 ~~ bf06_17_t1
bf06_22_t1 ~~ bf06_22_t1
bf06_27_t1 ~~ bf06_27_t1
bf06_32_t1 ~~ bf06_32_t1
bf06_37_t1 ~~ bf06_37_t1
bf06_42_t1 ~~ bf06_42_t1
bf06_47_t1 ~~ bf06_47_t1
bf06_52_t1 ~~ bf06_52_t1
bf06_57_t1 ~~ bf06_57_t1

bf06_02_t2 ~~ bf06_02_t2
bf06_07_t2 ~~ bf06_07_t2
bf06_12_t2 ~~ bf06_12_t2
bf06_17_t2 ~~ bf06_17_t2
bf06_22_t2 ~~ bf06_22_t2
bf06_27_t2 ~~ bf06_27_t2
bf06_32_t2 ~~ bf06_32_t2
bf06_37_t2 ~~ bf06_37_t2
bf06_42_t2 ~~ bf06_42_t2
bf06_47_t2 ~~ bf06_47_t2
bf06_52_t2 ~~ bf06_52_t2
bf06_57_t2 ~~ bf06_57_t2

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_strong_agree_ideal <- cfa(strong_agree_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_agree_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*bf06_02_t1 + lambda1*bf06_02_t1 + lambda2*bf06_07_t1 + lambda3*bf06_12_t1 + lambda4*bf06_17_t1 + lambda5*bf06_22_t1 + lambda6*bf06_27_t1 + lambda7*bf06_32_t1 + lambda8*bf06_37_t1 + lambda9*bf06_42_t1 + lambda10*bf06_47_t1 + lambda11*bf06_52_t1 + lambda12*bf06_57_t1
agree_ideal2 =~ NA*bf06_02_t2 + lambda1*bf06_02_t2 + lambda2*bf06_07_t2 + lambda3*bf06_12_t2 + lambda4*bf06_17_t2 + lambda5*bf06_22_t2 + lambda6*bf06_27_t2 + lambda7*bf06_32_t2 + lambda8*bf06_37_t2 + lambda9*bf06_42_t2 + lambda10*bf06_47_t2 + lambda11*bf06_52_t2 + lambda12*bf06_57_t2

# Intercepts
bf06_02_t1 ~ i1*1
bf06_07_t1 ~ i2*1
bf06_12_t1 ~ i3*1
bf06_17_t1 ~ i4*1
bf06_22_t1 ~ i5*1
bf06_27_t1 ~ i6*1
bf06_32_t1 ~ i7*1
bf06_37_t1 ~ i8*1
bf06_42_t1 ~ i9*1
bf06_47_t1 ~ i10*1
bf06_52_t1 ~ i11*1
bf06_57_t1 ~ i12*1

bf06_02_t2 ~ i1*1
bf06_07_t2 ~ i2*1
bf06_12_t2 ~ i3*1
bf06_17_t2 ~ i4*1
bf06_22_t2 ~ i5*1
bf06_27_t2 ~ i6*1
bf06_32_t2 ~ i7*1
bf06_37_t2 ~ i8*1
bf06_42_t2 ~ i9*1
bf06_47_t2 ~ i10*1
bf06_52_t2 ~ i11*1
bf06_57_t2 ~ i12*1

# Unique Variances
bf06_02_t1 ~~ u1*bf06_02_t1
bf06_07_t1 ~~ u2*bf06_07_t1
bf06_12_t1 ~~ u3*bf06_12_t1
bf06_17_t1 ~~ u4*bf06_17_t1
bf06_22_t1 ~~ u5*bf06_22_t1
bf06_27_t1 ~~ u6*bf06_27_t1
bf06_32_t1 ~~ u7*bf06_32_t1
bf06_37_t1 ~~ u8*bf06_37_t1
bf06_42_t1 ~~ u9*bf06_42_t1
bf06_47_t1 ~~ u10*bf06_47_t1
bf06_52_t1 ~~ u11*bf06_52_t1
bf06_57_t1 ~~ u12*bf06_57_t1

bf06_02_t2 ~~ u1*bf06_02_t2
bf06_07_t2 ~~ u2*bf06_07_t2
bf06_12_t2 ~~ u3*bf06_12_t2
bf06_17_t2 ~~ u4*bf06_17_t2
bf06_22_t2 ~~ u5*bf06_22_t2
bf06_27_t2 ~~ u6*bf06_27_t2
bf06_32_t2 ~~ u7*bf06_32_t2
bf06_37_t2 ~~ u8*bf06_37_t2
bf06_42_t2 ~~ u9*bf06_42_t2
bf06_47_t2 ~~ u10*bf06_47_t2
bf06_52_t2 ~~ u11*bf06_52_t2
bf06_57_t2 ~~ u12*bf06_57_t2

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_strict_agree_ideal <- cfa(strict_agree_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_agree_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   625    73 1268. 38717. 39041. 0.750 0.726 0.0805 0.0646
2 weak         625    62 1275. 38702. 38977. 0.751 0.738 0.0786 0.0659
3 strong       625    51 1282. 38687. 38913. 0.752 0.750 0.0769 0.0663
4 strict       625    39 1309. 38690. 38863. 0.749 0.757 0.0758 0.0819
# chi-square difference test for nested models 
anova(fit_configural_agree_ideal, fit_weak_agree_ideal)

Chi-Squared Difference Test

                            Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_agree_ideal 251 38717 39041 1268.0                         
fit_weak_agree_ideal       262 38702 38977 1274.6     6.6839     0      11
                           Pr(>Chisq)
fit_configural_agree_ideal           
fit_weak_agree_ideal           0.8241
anova(fit_weak_agree_ideal, fit_strong_agree_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_weak_agree_ideal   262 38702 38977 1274.6                         
fit_strong_agree_ideal 273 38687 38913 1281.7     7.0321     0      11
                       Pr(>Chisq)
fit_weak_agree_ideal             
fit_strong_agree_ideal     0.7965
anova(fit_strong_agree_ideal, fit_strict_agree_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_agree_ideal 273 38687 38913 1281.7                            
fit_strict_agree_ideal 285 38690 38863 1308.7      26.99 0.044707      12
                       Pr(>Chisq)   
fit_strong_agree_ideal              
fit_strict_agree_ideal   0.007752 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Somewhat better but still bad model fit. Chi^2 tests indicate that strong measurement invariance is given.

3.5.5 Conscientiousness: current-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*bf05_03_t1 + lambda1*bf05_03_t1 + bf05_08_t1 + bf05_13_t1 + bf05_18_t1 + bf05_23_t1 + bf05_28_t1 + bf05_33_t1 + bf05_38_t1 + bf05_43_t1 + bf05_48_t1 + bf05_53_t1 + bf05_58_t1
consc_curr2 =~ NA*bf05_03_t2 + lambda1*bf05_03_t2 + bf05_08_t2 + bf05_13_t2 + bf05_18_t2 + bf05_23_t2 + bf05_28_t2 + bf05_33_t2 + bf05_38_t2 + bf05_43_t2 + bf05_48_t2 + bf05_53_t2 + bf05_58_t2

# Intercepts
bf05_03_t1 ~ i1*1
bf05_08_t1 ~ 1
bf05_13_t1 ~ 1
bf05_18_t1 ~ 1
bf05_23_t1 ~ 1
bf05_28_t1 ~ 1
bf05_33_t1 ~ 1
bf05_38_t1 ~ 1
bf05_43_t1 ~ 1
bf05_48_t1 ~ 1
bf05_53_t1 ~ 1
bf05_58_t1 ~ 1

bf05_03_t2 ~ i1*1
bf05_08_t2 ~ 1
bf05_13_t2 ~ 1
bf05_18_t2 ~ 1
bf05_23_t2 ~ 1
bf05_28_t2 ~ 1
bf05_33_t2 ~ 1
bf05_38_t2 ~ 1
bf05_43_t2 ~ 1
bf05_48_t2 ~ 1
bf05_53_t2 ~ 1
bf05_58_t2 ~ 1

# Unique Variances
bf05_03_t1 ~~ bf05_03_t1
bf05_08_t1 ~~ bf05_08_t1
bf05_13_t1 ~~ bf05_13_t1
bf05_18_t1 ~~ bf05_18_t1
bf05_23_t1 ~~ bf05_23_t1
bf05_28_t1 ~~ bf05_28_t1
bf05_33_t1 ~~ bf05_33_t1
bf05_38_t1 ~~ bf05_38_t1
bf05_43_t1 ~~ bf05_43_t1
bf05_48_t1 ~~ bf05_48_t1
bf05_53_t1 ~~ bf05_53_t1
bf05_58_t1 ~~ bf05_58_t1

bf05_03_t2 ~~ bf05_03_t2
bf05_08_t2 ~~ bf05_08_t2
bf05_13_t2 ~~ bf05_13_t2
bf05_18_t2 ~~ bf05_18_t2
bf05_23_t2 ~~ bf05_23_t2
bf05_28_t2 ~~ bf05_28_t2
bf05_33_t2 ~~ bf05_33_t2
bf05_38_t2 ~~ bf05_38_t2
bf05_43_t2 ~~ bf05_43_t2
bf05_48_t2 ~~ bf05_48_t2
bf05_53_t2 ~~ bf05_53_t2
bf05_58_t2 ~~ bf05_58_t2

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_configural_consc_curr <- cfa(configural_consc_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_consc_curr, fit.measures = TRUE)

# Weak invariance model
weak_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*bf05_03_t1 + lambda1*bf05_03_t1 + lambda2*bf05_08_t1 + lambda3*bf05_13_t1 + lambda4*bf05_18_t1 + lambda5*bf05_23_t1 + lambda6*bf05_28_t1 + lambda7*bf05_33_t1 + lambda8*bf05_38_t1 + lambda9*bf05_43_t1 + lambda10*bf05_48_t1 + lambda11*bf05_53_t1 + lambda12*bf05_58_t1
consc_curr2 =~ NA*bf05_03_t2 + lambda1*bf05_03_t2 + lambda2*bf05_08_t2 + lambda3*bf05_13_t2 + lambda4*bf05_18_t2 + lambda5*bf05_23_t2 + lambda6*bf05_28_t2 + lambda7*bf05_33_t2 + lambda8*bf05_38_t2 + lambda9*bf05_43_t2 + lambda10*bf05_48_t2 + lambda11*bf05_53_t2 + lambda12*bf05_58_t2

# Intercepts
bf05_03_t1 ~ i1*1
bf05_08_t1 ~ 1
bf05_13_t1 ~ 1
bf05_18_t1 ~ 1
bf05_23_t1 ~ 1
bf05_28_t1 ~ 1
bf05_33_t1 ~ 1
bf05_38_t1 ~ 1
bf05_43_t1 ~ 1
bf05_48_t1 ~ 1
bf05_53_t1 ~ 1
bf05_58_t1 ~ 1

bf05_03_t2 ~ i1*1
bf05_08_t2 ~ 1
bf05_13_t2 ~ 1
bf05_18_t2 ~ 1
bf05_23_t2 ~ 1
bf05_28_t2 ~ 1
bf05_33_t2 ~ 1
bf05_38_t2 ~ 1
bf05_43_t2 ~ 1
bf05_48_t2 ~ 1
bf05_53_t2 ~ 1
bf05_58_t2 ~ 1

# Unique Variances
bf05_03_t1 ~~ bf05_03_t1
bf05_08_t1 ~~ bf05_08_t1
bf05_13_t1 ~~ bf05_13_t1
bf05_18_t1 ~~ bf05_18_t1
bf05_23_t1 ~~ bf05_23_t1
bf05_28_t1 ~~ bf05_28_t1
bf05_33_t1 ~~ bf05_33_t1
bf05_38_t1 ~~ bf05_38_t1
bf05_43_t1 ~~ bf05_43_t1
bf05_48_t1 ~~ bf05_48_t1
bf05_53_t1 ~~ bf05_53_t1
bf05_58_t1 ~~ bf05_58_t1

bf05_03_t2 ~~ bf05_03_t2
bf05_08_t2 ~~ bf05_08_t2
bf05_13_t2 ~~ bf05_13_t2
bf05_18_t2 ~~ bf05_18_t2
bf05_23_t2 ~~ bf05_23_t2
bf05_28_t2 ~~ bf05_28_t2
bf05_33_t2 ~~ bf05_33_t2
bf05_38_t2 ~~ bf05_38_t2
bf05_43_t2 ~~ bf05_43_t2
bf05_48_t2 ~~ bf05_48_t2
bf05_53_t2 ~~ bf05_53_t2
bf05_58_t2 ~~ bf05_58_t2

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_weak_consc_curr <- cfa(weak_consc_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_consc_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*bf05_03_t1 + lambda1*bf05_03_t1 + lambda2*bf05_08_t1 + lambda3*bf05_13_t1 + lambda4*bf05_18_t1 + lambda5*bf05_23_t1 + lambda6*bf05_28_t1 + lambda7*bf05_33_t1 + lambda8*bf05_38_t1 + lambda9*bf05_43_t1 + lambda10*bf05_48_t1 + lambda11*bf05_53_t1 + lambda12*bf05_58_t1
consc_curr2 =~ NA*bf05_03_t2 + lambda1*bf05_03_t2 + lambda2*bf05_08_t2 + lambda3*bf05_13_t2 + lambda4*bf05_18_t2 + lambda5*bf05_23_t2 + lambda6*bf05_28_t2 + lambda7*bf05_33_t2 + lambda8*bf05_38_t2 + lambda9*bf05_43_t2 + lambda10*bf05_48_t2 + lambda11*bf05_53_t2 + lambda12*bf05_58_t2

# Intercepts
bf05_03_t1 ~ i1*1
bf05_08_t1 ~ i2*1
bf05_13_t1 ~ i3*1
bf05_18_t1 ~ i4*1
bf05_23_t1 ~ i5*1
bf05_28_t1 ~ i6*1
bf05_33_t1 ~ i7*1
bf05_38_t1 ~ i8*1
bf05_43_t1 ~ i9*1
bf05_48_t1 ~ i10*1
bf05_53_t1 ~ i11*1
bf05_58_t1 ~ i12*1

bf05_03_t2 ~ i1*1
bf05_08_t2 ~ i2*1
bf05_13_t2 ~ i3*1
bf05_18_t2 ~ i4*1
bf05_23_t2 ~ i5*1
bf05_28_t2 ~ i6*1
bf05_33_t2 ~ i7*1
bf05_38_t2 ~ i8*1
bf05_43_t2 ~ i9*1
bf05_48_t2 ~ i10*1
bf05_53_t2 ~ i11*1
bf05_58_t2 ~ i12*1

# Unique Variances
bf05_03_t1 ~~ bf05_03_t1
bf05_08_t1 ~~ bf05_08_t1
bf05_13_t1 ~~ bf05_13_t1
bf05_18_t1 ~~ bf05_18_t1
bf05_23_t1 ~~ bf05_23_t1
bf05_28_t1 ~~ bf05_28_t1
bf05_33_t1 ~~ bf05_33_t1
bf05_38_t1 ~~ bf05_38_t1
bf05_43_t1 ~~ bf05_43_t1
bf05_48_t1 ~~ bf05_48_t1
bf05_53_t1 ~~ bf05_53_t1
bf05_58_t1 ~~ bf05_58_t1

bf05_03_t2 ~~ bf05_03_t2
bf05_08_t2 ~~ bf05_08_t2
bf05_13_t2 ~~ bf05_13_t2
bf05_18_t2 ~~ bf05_18_t2
bf05_23_t2 ~~ bf05_23_t2
bf05_28_t2 ~~ bf05_28_t2
bf05_33_t2 ~~ bf05_33_t2
bf05_38_t2 ~~ bf05_38_t2
bf05_43_t2 ~~ bf05_43_t2
bf05_48_t2 ~~ bf05_48_t2
bf05_53_t2 ~~ bf05_53_t2
bf05_58_t2 ~~ bf05_58_t2

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_strong_consc_curr <- cfa(strong_consc_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_consc_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*bf05_03_t1 + lambda1*bf05_03_t1 + lambda2*bf05_08_t1 + lambda3*bf05_13_t1 + lambda4*bf05_18_t1 + lambda5*bf05_23_t1 + lambda6*bf05_28_t1 + lambda7*bf05_33_t1 + lambda8*bf05_38_t1 + lambda9*bf05_43_t1 + lambda10*bf05_48_t1 + lambda11*bf05_53_t1 + lambda12*bf05_58_t1
consc_curr2 =~ NA*bf05_03_t2 + lambda1*bf05_03_t2 + lambda2*bf05_08_t2 + lambda3*bf05_13_t2 + lambda4*bf05_18_t2 + lambda5*bf05_23_t2 + lambda6*bf05_28_t2 + lambda7*bf05_33_t2 + lambda8*bf05_38_t2 + lambda9*bf05_43_t2 + lambda10*bf05_48_t2 + lambda11*bf05_53_t2 + lambda12*bf05_58_t2

# Intercepts
bf05_03_t1 ~ i1*1
bf05_08_t1 ~ i2*1
bf05_13_t1 ~ i3*1
bf05_18_t1 ~ i4*1
bf05_23_t1 ~ i5*1
bf05_28_t1 ~ i6*1
bf05_33_t1 ~ i7*1
bf05_38_t1 ~ i8*1
bf05_43_t1 ~ i9*1
bf05_48_t1 ~ i10*1
bf05_53_t1 ~ i11*1
bf05_58_t1 ~ i12*1

bf05_03_t2 ~ i1*1
bf05_08_t2 ~ i2*1
bf05_13_t2 ~ i3*1
bf05_18_t2 ~ i4*1
bf05_23_t2 ~ i5*1
bf05_28_t2 ~ i6*1
bf05_33_t2 ~ i7*1
bf05_38_t2 ~ i8*1
bf05_43_t2 ~ i9*1
bf05_48_t2 ~ i10*1
bf05_53_t2 ~ i11*1
bf05_58_t2 ~ i12*1

# Unique Variances
bf05_03_t1 ~~ u1*bf05_03_t1
bf05_08_t1 ~~ u2*bf05_08_t1
bf05_13_t1 ~~ u3*bf05_13_t1
bf05_18_t1 ~~ u4*bf05_18_t1
bf05_23_t1 ~~ u5*bf05_23_t1
bf05_28_t1 ~~ u6*bf05_28_t1
bf05_33_t1 ~~ u7*bf05_33_t1
bf05_38_t1 ~~ u8*bf05_38_t1
bf05_43_t1 ~~ u9*bf05_43_t1
bf05_48_t1 ~~ u10*bf05_48_t1
bf05_53_t1 ~~ u11*bf05_53_t1
bf05_58_t1 ~~ u12*bf05_58_t1

bf05_03_t2 ~~ u1*bf05_03_t2
bf05_08_t2 ~~ u2*bf05_08_t2
bf05_13_t2 ~~ u3*bf05_13_t2
bf05_18_t2 ~~ u4*bf05_18_t2
bf05_23_t2 ~~ u5*bf05_23_t2
bf05_28_t2 ~~ u6*bf05_28_t2
bf05_33_t2 ~~ u7*bf05_33_t2
bf05_38_t2 ~~ u8*bf05_38_t2
bf05_43_t2 ~~ u9*bf05_43_t2
bf05_48_t2 ~~ u10*bf05_48_t2
bf05_53_t2 ~~ u11*bf05_53_t2
bf05_58_t2 ~~ u12*bf05_58_t2

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_strict_consc_curr <- cfa(strict_consc_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_consc_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   625    73 2631. 41351. 41675. 0.698 0.668 0.123 0.0824
2 weak         625    62 2636. 41333. 41608. 0.699 0.682 0.120 0.0829
3 strong       625    51 2647. 41322. 41548. 0.698 0.695 0.118 0.0831
4 strict       625    39 2672. 41323. 41496. 0.697 0.706 0.116 0.0860
# chi-square difference test for nested models 
anova(fit_configural_consc_curr, fit_weak_consc_curr)

Chi-Squared Difference Test

                           Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_consc_curr 251 41351 41675 2631.5                         
fit_weak_consc_curr       262 41333 41608 2635.8     4.2917     0      11
                          Pr(>Chisq)
fit_configural_consc_curr           
fit_weak_consc_curr           0.9606
anova(fit_weak_consc_curr, fit_strong_consc_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff     RMSEA Df diff
fit_weak_consc_curr   262 41333 41608 2635.8                             
fit_strong_consc_curr 273 41322 41548 2647.0     11.226 0.0057342      11
                      Pr(>Chisq)
fit_weak_consc_curr             
fit_strong_consc_curr     0.4245
anova(fit_strong_consc_curr, fit_strict_consc_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_consc_curr 273 41322 41548 2647.0                            
fit_strict_consc_curr 285 41323 41496 2671.5     24.554 0.040912      12
                      Pr(>Chisq)  
fit_strong_consc_curr             
fit_strict_consc_curr    0.01709 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Bad model fit. Chi^2 tests indicate that strong measurement invariance is given.

3.5.6 Conscientiousness: ideal-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*bf06_03_t1 + lambda1*bf06_03_t1 + bf06_08_t1 + bf06_13_t1 + bf06_18_t1 + bf06_23_t1 + bf06_28_t1 + bf06_33_t1 + bf06_38_t1 + bf06_43_t1 + bf06_48_t1 + bf06_53_t1 + bf06_58_t1
consc_ideal2 =~ NA*bf06_03_t2 + lambda1*bf06_03_t2 + bf06_08_t2 + bf06_13_t2 + bf06_18_t2 + bf06_23_t2 + bf06_28_t2 + bf06_33_t2 + bf06_38_t2 + bf06_43_t2 + bf06_48_t2 + bf06_53_t2 + bf06_58_t2

# Intercepts
bf06_03_t1 ~ i1*1
bf06_08_t1 ~ 1
bf06_13_t1 ~ 1
bf06_18_t1 ~ 1
bf06_23_t1 ~ 1
bf06_28_t1 ~ 1
bf06_33_t1 ~ 1
bf06_38_t1 ~ 1
bf06_43_t1 ~ 1
bf06_48_t1 ~ 1
bf06_53_t1 ~ 1
bf06_58_t1 ~ 1

bf06_03_t2 ~ i1*1
bf06_08_t2 ~ 1
bf06_13_t2 ~ 1
bf06_18_t2 ~ 1
bf06_23_t2 ~ 1
bf06_28_t2 ~ 1
bf06_33_t2 ~ 1
bf06_38_t2 ~ 1
bf06_43_t2 ~ 1
bf06_48_t2 ~ 1
bf06_53_t2 ~ 1
bf06_58_t2 ~ 1

# Unique Variances
bf06_03_t1 ~~ bf06_03_t1
bf06_08_t1 ~~ bf06_08_t1
bf06_13_t1 ~~ bf06_13_t1
bf06_18_t1 ~~ bf06_18_t1
bf06_23_t1 ~~ bf06_23_t1
bf06_28_t1 ~~ bf06_28_t1
bf06_33_t1 ~~ bf06_33_t1
bf06_38_t1 ~~ bf06_38_t1
bf06_43_t1 ~~ bf06_43_t1
bf06_48_t1 ~~ bf06_48_t1
bf06_53_t1 ~~ bf06_53_t1
bf06_58_t1 ~~ bf06_58_t1

bf06_03_t2 ~~ bf06_03_t2
bf06_08_t2 ~~ bf06_08_t2
bf06_13_t2 ~~ bf06_13_t2
bf06_18_t2 ~~ bf06_18_t2
bf06_23_t2 ~~ bf06_23_t2
bf06_28_t2 ~~ bf06_28_t2
bf06_33_t2 ~~ bf06_33_t2
bf06_38_t2 ~~ bf06_38_t2
bf06_43_t2 ~~ bf06_43_t2
bf06_48_t2 ~~ bf06_48_t2
bf06_53_t2 ~~ bf06_53_t2
bf06_58_t2 ~~ bf06_58_t2

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_configural_consc_ideal <- cfa(configural_consc_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_consc_ideal, fit.measures = TRUE)

# Weak invariance model
weak_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*bf06_03_t1 + lambda1*bf06_03_t1 + lambda2*bf06_08_t1 + lambda3*bf06_13_t1 + lambda4*bf06_18_t1 + lambda5*bf06_23_t1 + lambda6*bf06_28_t1 + lambda7*bf06_33_t1 + lambda8*bf06_38_t1 + lambda9*bf06_43_t1 + lambda10*bf06_48_t1 + lambda11*bf06_53_t1 + lambda12*bf06_58_t1
consc_ideal2 =~ NA*bf06_03_t2 + lambda1*bf06_03_t2 + lambda2*bf06_08_t2 + lambda3*bf06_13_t2 + lambda4*bf06_18_t2 + lambda5*bf06_23_t2 + lambda6*bf06_28_t2 + lambda7*bf06_33_t2 + lambda8*bf06_38_t2 + lambda9*bf06_43_t2 + lambda10*bf06_48_t2 + lambda11*bf06_53_t2 + lambda12*bf06_58_t2

# Intercepts
bf06_03_t1 ~ i1*1
bf06_08_t1 ~ 1
bf06_13_t1 ~ 1
bf06_18_t1 ~ 1
bf06_23_t1 ~ 1
bf06_28_t1 ~ 1
bf06_33_t1 ~ 1
bf06_38_t1 ~ 1
bf06_43_t1 ~ 1
bf06_48_t1 ~ 1
bf06_53_t1 ~ 1
bf06_58_t1 ~ 1

bf06_03_t2 ~ i1*1
bf06_08_t2 ~ 1
bf06_13_t2 ~ 1
bf06_18_t2 ~ 1
bf06_23_t2 ~ 1
bf06_28_t2 ~ 1
bf06_33_t2 ~ 1
bf06_38_t2 ~ 1
bf06_43_t2 ~ 1
bf06_48_t2 ~ 1
bf06_53_t2 ~ 1
bf06_58_t2 ~ 1

# Unique Variances
bf06_03_t1 ~~ bf06_03_t1
bf06_08_t1 ~~ bf06_08_t1
bf06_13_t1 ~~ bf06_13_t1
bf06_18_t1 ~~ bf06_18_t1
bf06_23_t1 ~~ bf06_23_t1
bf06_28_t1 ~~ bf06_28_t1
bf06_33_t1 ~~ bf06_33_t1
bf06_38_t1 ~~ bf06_38_t1
bf06_43_t1 ~~ bf06_43_t1
bf06_48_t1 ~~ bf06_48_t1
bf06_53_t1 ~~ bf06_53_t1
bf06_58_t1 ~~ bf06_58_t1

bf06_03_t2 ~~ bf06_03_t2
bf06_08_t2 ~~ bf06_08_t2
bf06_13_t2 ~~ bf06_13_t2
bf06_18_t2 ~~ bf06_18_t2
bf06_23_t2 ~~ bf06_23_t2
bf06_28_t2 ~~ bf06_28_t2
bf06_33_t2 ~~ bf06_33_t2
bf06_38_t2 ~~ bf06_38_t2
bf06_43_t2 ~~ bf06_43_t2
bf06_48_t2 ~~ bf06_48_t2
bf06_53_t2 ~~ bf06_53_t2
bf06_58_t2 ~~ bf06_58_t2

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_weak_consc_ideal <- cfa(weak_consc_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_consc_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*bf06_03_t1 + lambda1*bf06_03_t1 + lambda2*bf06_08_t1 + lambda3*bf06_13_t1 + lambda4*bf06_18_t1 + lambda5*bf06_23_t1 + lambda6*bf06_28_t1 + lambda7*bf06_33_t1 + lambda8*bf06_38_t1 + lambda9*bf06_43_t1 + lambda10*bf06_48_t1 + lambda11*bf06_53_t1 + lambda12*bf06_58_t1
consc_ideal2 =~ NA*bf06_03_t2 + lambda1*bf06_03_t2 + lambda2*bf06_08_t2 + lambda3*bf06_13_t2 + lambda4*bf06_18_t2 + lambda5*bf06_23_t2 + lambda6*bf06_28_t2 + lambda7*bf06_33_t2 + lambda8*bf06_38_t2 + lambda9*bf06_43_t2 + lambda10*bf06_48_t2 + lambda11*bf06_53_t2 + lambda12*bf06_58_t2

# Intercepts
bf06_03_t1 ~ i1*1
bf06_08_t1 ~ i2*1
bf06_13_t1 ~ i3*1
bf06_18_t1 ~ i4*1
bf06_23_t1 ~ i5*1
bf06_28_t1 ~ i6*1
bf06_33_t1 ~ i7*1
bf06_38_t1 ~ i8*1
bf06_43_t1 ~ i9*1
bf06_48_t1 ~ i10*1
bf06_53_t1 ~ i11*1
bf06_58_t1 ~ i12*1

bf06_03_t2 ~ i1*1
bf06_08_t2 ~ i2*1
bf06_13_t2 ~ i3*1
bf06_18_t2 ~ i4*1
bf06_23_t2 ~ i5*1
bf06_28_t2 ~ i6*1
bf06_33_t2 ~ i7*1
bf06_38_t2 ~ i8*1
bf06_43_t2 ~ i9*1
bf06_48_t2 ~ i10*1
bf06_53_t2 ~ i11*1
bf06_58_t2 ~ i12*1

# Unique Variances
bf06_03_t1 ~~ bf06_03_t1
bf06_08_t1 ~~ bf06_08_t1
bf06_13_t1 ~~ bf06_13_t1
bf06_18_t1 ~~ bf06_18_t1
bf06_23_t1 ~~ bf06_23_t1
bf06_28_t1 ~~ bf06_28_t1
bf06_33_t1 ~~ bf06_33_t1
bf06_38_t1 ~~ bf06_38_t1
bf06_43_t1 ~~ bf06_43_t1
bf06_48_t1 ~~ bf06_48_t1
bf06_53_t1 ~~ bf06_53_t1
bf06_58_t1 ~~ bf06_58_t1

bf06_03_t2 ~~ bf06_03_t2
bf06_08_t2 ~~ bf06_08_t2
bf06_13_t2 ~~ bf06_13_t2
bf06_18_t2 ~~ bf06_18_t2
bf06_23_t2 ~~ bf06_23_t2
bf06_28_t2 ~~ bf06_28_t2
bf06_33_t2 ~~ bf06_33_t2
bf06_38_t2 ~~ bf06_38_t2
bf06_43_t2 ~~ bf06_43_t2
bf06_48_t2 ~~ bf06_48_t2
bf06_53_t2 ~~ bf06_53_t2
bf06_58_t2 ~~ bf06_58_t2

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_strong_consc_ideal <- cfa(strong_consc_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_consc_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*bf06_03_t1 + lambda1*bf06_03_t1 + lambda2*bf06_08_t1 + lambda3*bf06_13_t1 + lambda4*bf06_18_t1 + lambda5*bf06_23_t1 + lambda6*bf06_28_t1 + lambda7*bf06_33_t1 + lambda8*bf06_38_t1 + lambda9*bf06_43_t1 + lambda10*bf06_48_t1 + lambda11*bf06_53_t1 + lambda12*bf06_58_t1
consc_ideal2 =~ NA*bf06_03_t2 + lambda1*bf06_03_t2 + lambda2*bf06_08_t2 + lambda3*bf06_13_t2 + lambda4*bf06_18_t2 + lambda5*bf06_23_t2 + lambda6*bf06_28_t2 + lambda7*bf06_33_t2 + lambda8*bf06_38_t2 + lambda9*bf06_43_t2 + lambda10*bf06_48_t2 + lambda11*bf06_53_t2 + lambda12*bf06_58_t2

# Intercepts
bf06_03_t1 ~ i1*1
bf06_08_t1 ~ i2*1
bf06_13_t1 ~ i3*1
bf06_18_t1 ~ i4*1
bf06_23_t1 ~ i5*1
bf06_28_t1 ~ i6*1
bf06_33_t1 ~ i7*1
bf06_38_t1 ~ i8*1
bf06_43_t1 ~ i9*1
bf06_48_t1 ~ i10*1
bf06_53_t1 ~ i11*1
bf06_58_t1 ~ i12*1

bf06_03_t2 ~ i1*1
bf06_08_t2 ~ i2*1
bf06_13_t2 ~ i3*1
bf06_18_t2 ~ i4*1
bf06_23_t2 ~ i5*1
bf06_28_t2 ~ i6*1
bf06_33_t2 ~ i7*1
bf06_38_t2 ~ i8*1
bf06_43_t2 ~ i9*1
bf06_48_t2 ~ i10*1
bf06_53_t2 ~ i11*1
bf06_58_t2 ~ i12*1

# Unique Variances
bf06_03_t1 ~~ u1*bf06_03_t1
bf06_08_t1 ~~ u2*bf06_08_t1
bf06_13_t1 ~~ u3*bf06_13_t1
bf06_18_t1 ~~ u4*bf06_18_t1
bf06_23_t1 ~~ u5*bf06_23_t1
bf06_28_t1 ~~ u6*bf06_28_t1
bf06_33_t1 ~~ u7*bf06_33_t1
bf06_38_t1 ~~ u8*bf06_38_t1
bf06_43_t1 ~~ u9*bf06_43_t1
bf06_48_t1 ~~ u10*bf06_48_t1
bf06_53_t1 ~~ u11*bf06_53_t1
bf06_58_t1 ~~ u12*bf06_58_t1

bf06_03_t2 ~~ u1*bf06_03_t2
bf06_08_t2 ~~ u2*bf06_08_t2
bf06_13_t2 ~~ u3*bf06_13_t2
bf06_18_t2 ~~ u4*bf06_18_t2
bf06_23_t2 ~~ u5*bf06_23_t2
bf06_28_t2 ~~ u6*bf06_28_t2
bf06_33_t2 ~~ u7*bf06_33_t2
bf06_38_t2 ~~ u8*bf06_38_t2
bf06_43_t2 ~~ u9*bf06_43_t2
bf06_48_t2 ~~ u10*bf06_48_t2
bf06_53_t2 ~~ u11*bf06_53_t2
bf06_58_t2 ~~ u12*bf06_58_t2

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_strict_consc_ideal <- cfa(strict_consc_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_consc_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   625    73  997. 33894. 34218. 0.801 0.781 0.0689 0.0552
2 weak         625    62 1007. 33883. 34158. 0.801 0.791 0.0674 0.0571
3 strong       625    51 1011. 33864. 34091. 0.803 0.801 0.0657 0.0573
4 strict       625    39 1070. 33900. 34073. 0.791 0.797 0.0664 0.0729
# chi-square difference test for nested models 
anova(fit_configural_consc_ideal, fit_weak_consc_ideal)

Chi-Squared Difference Test

                            Df   AIC   BIC   Chisq Chisq diff RMSEA Df diff
fit_configural_consc_ideal 251 33894 34218  996.51                         
fit_weak_consc_ideal       262 33883 34158 1006.66     10.156     0      11
                           Pr(>Chisq)
fit_configural_consc_ideal           
fit_weak_consc_ideal           0.5164
anova(fit_weak_consc_ideal, fit_strong_consc_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_weak_consc_ideal   262 33883 34158 1006.7                         
fit_strong_consc_ideal 273 33864 34091 1010.5     3.8621     0      11
                       Pr(>Chisq)
fit_weak_consc_ideal             
fit_strong_consc_ideal     0.9738
anova(fit_strong_consc_ideal, fit_strict_consc_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_consc_ideal 273 33864 34091 1010.5                            
fit_strict_consc_ideal 285 33900 34073 1070.1     59.537 0.079613      12
                       Pr(>Chisq)    
fit_strong_consc_ideal               
fit_strict_consc_ideal  2.742e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Somewhat better but still bad model fit. Chi^2 tests indicate that strong measurement invariance is given.

3.5.7 Neuroticism: current-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*bf05_04_t1 + lambda1*bf05_04_t1 + bf05_09_t1 + bf05_14_t1 + bf05_19_t1 + bf05_24_t1 + bf05_29_t1 + bf05_34_t1 + bf05_39_t1 + bf05_44_t1 + bf05_49_t1 + bf05_54_t1 + bf05_59_t1
neuro_curr2 =~ NA*bf05_04_t2 + lambda1*bf05_04_t2 + bf05_09_t2 + bf05_14_t2 + bf05_19_t2 + bf05_24_t2 + bf05_29_t2 + bf05_34_t2 + bf05_39_t2 + bf05_44_t2 + bf05_49_t2 + bf05_54_t2 + bf05_59_t2

# Intercepts
bf05_04_t1 ~ i1*1
bf05_09_t1 ~ 1
bf05_14_t1 ~ 1
bf05_19_t1 ~ 1
bf05_24_t1 ~ 1
bf05_29_t1 ~ 1
bf05_34_t1 ~ 1
bf05_39_t1 ~ 1
bf05_44_t1 ~ 1
bf05_49_t1 ~ 1
bf05_54_t1 ~ 1
bf05_59_t1 ~ 1

bf05_04_t2 ~ i1*1
bf05_09_t2 ~ 1
bf05_14_t2 ~ 1
bf05_19_t2 ~ 1
bf05_24_t2 ~ 1
bf05_29_t2 ~ 1
bf05_34_t2 ~ 1
bf05_39_t2 ~ 1
bf05_44_t2 ~ 1
bf05_49_t2 ~ 1
bf05_54_t2 ~ 1
bf05_59_t2 ~ 1

# Unique Variances
bf05_04_t1 ~~ bf05_04_t1
bf05_09_t1 ~~ bf05_09_t1
bf05_14_t1 ~~ bf05_14_t1
bf05_19_t1 ~~ bf05_19_t1
bf05_24_t1 ~~ bf05_24_t1
bf05_29_t1 ~~ bf05_29_t1
bf05_34_t1 ~~ bf05_34_t1
bf05_39_t1 ~~ bf05_39_t1
bf05_44_t1 ~~ bf05_44_t1
bf05_49_t1 ~~ bf05_49_t1
bf05_54_t1 ~~ bf05_54_t1
bf05_59_t1 ~~ bf05_59_t1

bf05_04_t2 ~~ bf05_04_t2
bf05_09_t2 ~~ bf05_09_t2
bf05_14_t2 ~~ bf05_14_t2
bf05_19_t2 ~~ bf05_19_t2
bf05_24_t2 ~~ bf05_24_t2
bf05_29_t2 ~~ bf05_29_t2
bf05_34_t2 ~~ bf05_34_t2
bf05_39_t2 ~~ bf05_39_t2
bf05_44_t2 ~~ bf05_44_t2
bf05_49_t2 ~~ bf05_49_t2
bf05_54_t2 ~~ bf05_54_t2
bf05_59_t2 ~~ bf05_59_t2

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_configural_neuro_curr <- cfa(configural_neuro_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_neuro_curr, fit.measures = TRUE)

# Weak invariance model
weak_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*bf05_04_t1 + lambda1*bf05_04_t1 + lambda2*bf05_09_t1 + lambda3*bf05_14_t1 + lambda4*bf05_19_t1 + lambda5*bf05_24_t1 + lambda6*bf05_29_t1 + lambda7*bf05_34_t1 + lambda8*bf05_39_t1 + lambda9*bf05_44_t1 + lambda10*bf05_49_t1 + lambda11*bf05_54_t1 + lambda12*bf05_59_t1
neuro_curr2 =~ NA*bf05_04_t2 + lambda1*bf05_04_t2 + lambda2*bf05_09_t2 + lambda3*bf05_14_t2 + lambda4*bf05_19_t2 + lambda5*bf05_24_t2 + lambda6*bf05_29_t2 + lambda7*bf05_34_t2 + lambda8*bf05_39_t2 + lambda9*bf05_44_t2 + lambda10*bf05_49_t2 + lambda11*bf05_54_t2 + lambda12*bf05_59_t2

# Intercepts
bf05_04_t1 ~ i1*1
bf05_09_t1 ~ 1
bf05_14_t1 ~ 1
bf05_19_t1 ~ 1
bf05_24_t1 ~ 1
bf05_29_t1 ~ 1
bf05_34_t1 ~ 1
bf05_39_t1 ~ 1
bf05_44_t1 ~ 1
bf05_49_t1 ~ 1
bf05_54_t1 ~ 1
bf05_59_t1 ~ 1

bf05_04_t2 ~ i1*1
bf05_09_t2 ~ 1
bf05_14_t2 ~ 1
bf05_19_t2 ~ 1
bf05_24_t2 ~ 1
bf05_29_t2 ~ 1
bf05_34_t2 ~ 1
bf05_39_t2 ~ 1
bf05_44_t2 ~ 1
bf05_49_t2 ~ 1
bf05_54_t2 ~ 1
bf05_59_t2 ~ 1

# Unique Variances
bf05_04_t1 ~~ bf05_04_t1
bf05_09_t1 ~~ bf05_09_t1
bf05_14_t1 ~~ bf05_14_t1
bf05_19_t1 ~~ bf05_19_t1
bf05_24_t1 ~~ bf05_24_t1
bf05_29_t1 ~~ bf05_29_t1
bf05_34_t1 ~~ bf05_34_t1
bf05_39_t1 ~~ bf05_39_t1
bf05_44_t1 ~~ bf05_44_t1
bf05_49_t1 ~~ bf05_49_t1
bf05_54_t1 ~~ bf05_54_t1
bf05_59_t1 ~~ bf05_59_t1

bf05_04_t2 ~~ bf05_04_t2
bf05_09_t2 ~~ bf05_09_t2
bf05_14_t2 ~~ bf05_14_t2
bf05_19_t2 ~~ bf05_19_t2
bf05_24_t2 ~~ bf05_24_t2
bf05_29_t2 ~~ bf05_29_t2
bf05_34_t2 ~~ bf05_34_t2
bf05_39_t2 ~~ bf05_39_t2
bf05_44_t2 ~~ bf05_44_t2
bf05_49_t2 ~~ bf05_49_t2
bf05_54_t2 ~~ bf05_54_t2
bf05_59_t2 ~~ bf05_59_t2

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_weak_neuro_curr <- cfa(weak_neuro_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_neuro_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*bf05_04_t1 + lambda1*bf05_04_t1 + lambda2*bf05_09_t1 + lambda3*bf05_14_t1 + lambda4*bf05_19_t1 + lambda5*bf05_24_t1 + lambda6*bf05_29_t1 + lambda7*bf05_34_t1 + lambda8*bf05_39_t1 + lambda9*bf05_44_t1 + lambda10*bf05_49_t1 + lambda11*bf05_54_t1 + lambda12*bf05_59_t1
neuro_curr2 =~ NA*bf05_04_t2 + lambda1*bf05_04_t2 + lambda2*bf05_09_t2 + lambda3*bf05_14_t2 + lambda4*bf05_19_t2 + lambda5*bf05_24_t2 + lambda6*bf05_29_t2 + lambda7*bf05_34_t2 + lambda8*bf05_39_t2 + lambda9*bf05_44_t2 + lambda10*bf05_49_t2 + lambda11*bf05_54_t2 + lambda12*bf05_59_t2

# Intercepts
bf05_04_t1 ~ i1*1
bf05_09_t1 ~ i2*1
bf05_14_t1 ~ i3*1
bf05_19_t1 ~ i4*1
bf05_24_t1 ~ i5*1
bf05_29_t1 ~ i6*1
bf05_34_t1 ~ i7*1
bf05_39_t1 ~ i8*1
bf05_44_t1 ~ i9*1
bf05_49_t1 ~ i10*1
bf05_54_t1 ~ i11*1
bf05_59_t1 ~ i12*1

bf05_04_t2 ~ i1*1
bf05_09_t2 ~ i2*1
bf05_14_t2 ~ i3*1
bf05_19_t2 ~ i4*1
bf05_24_t2 ~ i5*1
bf05_29_t2 ~ i6*1
bf05_34_t2 ~ i7*1
bf05_39_t2 ~ i8*1
bf05_44_t2 ~ i9*1
bf05_49_t2 ~ i10*1
bf05_54_t2 ~ i11*1
bf05_59_t2 ~ i12*1

# Unique Variances
bf05_04_t1 ~~ bf05_04_t1
bf05_09_t1 ~~ bf05_09_t1
bf05_14_t1 ~~ bf05_14_t1
bf05_19_t1 ~~ bf05_19_t1
bf05_24_t1 ~~ bf05_24_t1
bf05_29_t1 ~~ bf05_29_t1
bf05_34_t1 ~~ bf05_34_t1
bf05_39_t1 ~~ bf05_39_t1
bf05_44_t1 ~~ bf05_44_t1
bf05_49_t1 ~~ bf05_49_t1
bf05_54_t1 ~~ bf05_54_t1
bf05_59_t1 ~~ bf05_59_t1

bf05_04_t2 ~~ bf05_04_t2
bf05_09_t2 ~~ bf05_09_t2
bf05_14_t2 ~~ bf05_14_t2
bf05_19_t2 ~~ bf05_19_t2
bf05_24_t2 ~~ bf05_24_t2
bf05_29_t2 ~~ bf05_29_t2
bf05_34_t2 ~~ bf05_34_t2
bf05_39_t2 ~~ bf05_39_t2
bf05_44_t2 ~~ bf05_44_t2
bf05_49_t2 ~~ bf05_49_t2
bf05_54_t2 ~~ bf05_54_t2
bf05_59_t2 ~~ bf05_59_t2

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_strong_neuro_curr <- cfa(strong_neuro_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_neuro_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*bf05_04_t1 + lambda1*bf05_04_t1 + lambda2*bf05_09_t1 + lambda3*bf05_14_t1 + lambda4*bf05_19_t1 + lambda5*bf05_24_t1 + lambda6*bf05_29_t1 + lambda7*bf05_34_t1 + lambda8*bf05_39_t1 + lambda9*bf05_44_t1 + lambda10*bf05_49_t1 + lambda11*bf05_54_t1 + lambda12*bf05_59_t1
neuro_curr2 =~ NA*bf05_04_t2 + lambda1*bf05_04_t2 + lambda2*bf05_09_t2 + lambda3*bf05_14_t2 + lambda4*bf05_19_t2 + lambda5*bf05_24_t2 + lambda6*bf05_29_t2 + lambda7*bf05_34_t2 + lambda8*bf05_39_t2 + lambda9*bf05_44_t2 + lambda10*bf05_49_t2 + lambda11*bf05_54_t2 + lambda12*bf05_59_t2

# Intercepts
bf05_04_t1 ~ i1*1
bf05_09_t1 ~ i2*1
bf05_14_t1 ~ i3*1
bf05_19_t1 ~ i4*1
bf05_24_t1 ~ i5*1
bf05_29_t1 ~ i6*1
bf05_34_t1 ~ i7*1
bf05_39_t1 ~ i8*1
bf05_44_t1 ~ i9*1
bf05_49_t1 ~ i10*1
bf05_54_t1 ~ i11*1
bf05_59_t1 ~ i12*1

bf05_04_t2 ~ i1*1
bf05_09_t2 ~ i2*1
bf05_14_t2 ~ i3*1
bf05_19_t2 ~ i4*1
bf05_24_t2 ~ i5*1
bf05_29_t2 ~ i6*1
bf05_34_t2 ~ i7*1
bf05_39_t2 ~ i8*1
bf05_44_t2 ~ i9*1
bf05_49_t2 ~ i10*1
bf05_54_t2 ~ i11*1
bf05_59_t2 ~ i12*1

# Unique Variances
bf05_04_t1 ~~ u1*bf05_04_t1
bf05_09_t1 ~~ u2*bf05_09_t1
bf05_14_t1 ~~ u3*bf05_14_t1
bf05_19_t1 ~~ u4*bf05_19_t1
bf05_24_t1 ~~ u5*bf05_24_t1
bf05_29_t1 ~~ u6*bf05_29_t1
bf05_34_t1 ~~ u7*bf05_34_t1
bf05_39_t1 ~~ u8*bf05_39_t1
bf05_44_t1 ~~ u9*bf05_44_t1
bf05_49_t1 ~~ u10*bf05_49_t1
bf05_54_t1 ~~ u11*bf05_54_t1
bf05_59_t1 ~~ u12*bf05_59_t1

bf05_04_t2 ~~ u1*bf05_04_t2
bf05_09_t2 ~~ u2*bf05_09_t2
bf05_14_t2 ~~ u3*bf05_14_t2
bf05_19_t2 ~~ u4*bf05_19_t2
bf05_24_t2 ~~ u5*bf05_24_t2
bf05_29_t2 ~~ u6*bf05_29_t2
bf05_34_t2 ~~ u7*bf05_34_t2
bf05_39_t2 ~~ u8*bf05_39_t2
bf05_44_t2 ~~ u9*bf05_44_t2
bf05_49_t2 ~~ u10*bf05_49_t2
bf05_54_t2 ~~ u11*bf05_54_t2
bf05_59_t2 ~~ u12*bf05_59_t2

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_strict_neuro_curr <- cfa(strict_neuro_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_neuro_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   625    73 2361. 42542. 42866. 0.743 0.717 0.116 0.0704
2 weak         625    62 2364. 42524. 42799. 0.744 0.730 0.113 0.0709
3 strong       625    51 2376. 42514. 42740. 0.744 0.741 0.111 0.0712
4 strict       625    39 2392. 42506. 42679. 0.743 0.751 0.109 0.0731
# chi-square difference test for nested models 
anova(fit_configural_neuro_curr, fit_weak_neuro_curr)

Chi-Squared Difference Test

                           Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_neuro_curr 251 42542 42866 2360.7                         
fit_weak_neuro_curr       262 42524 42799 2364.3     3.5975     0      11
                          Pr(>Chisq)
fit_configural_neuro_curr           
fit_weak_neuro_curr           0.9802
anova(fit_weak_neuro_curr, fit_strong_neuro_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff     RMSEA Df diff
fit_weak_neuro_curr   262 42524 42799 2364.3                             
fit_strong_neuro_curr 273 42514 42740 2375.8     11.573 0.0091312      11
                      Pr(>Chisq)
fit_weak_neuro_curr             
fit_strong_neuro_curr     0.3966
anova(fit_strong_neuro_curr, fit_strict_neuro_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_neuro_curr 273 42514 42740 2375.8                            
fit_strict_neuro_curr 285 42506 42679 2392.5     16.642 0.024879      12
                      Pr(>Chisq)
fit_strong_neuro_curr           
fit_strict_neuro_curr     0.1636

Relatively bad model fit in all stages of measurement invariance. Chi^2 tests indicate that strict measurement invariance is given.

3.5.8 Neuroticism: ideal-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*bf06_04_t1 + lambda1*bf06_04_t1 + bf06_09_t1 + bf06_14_t1 + bf06_19_t1 + bf06_24_t1 + bf06_29_t1 + bf06_34_t1 + bf06_39_t1 + bf06_44_t1 + bf06_49_t1 + bf06_54_t1 + bf06_59_t1
neuro_ideal2 =~ NA*bf06_04_t2 + lambda1*bf06_04_t2 + bf06_09_t2 + bf06_14_t2 + bf06_19_t2 + bf06_24_t2 + bf06_29_t2 + bf06_34_t2 + bf06_39_t2 + bf06_44_t2 + bf06_49_t2 + bf06_54_t2 + bf06_59_t2

# Intercepts
bf06_04_t1 ~ i1*1
bf06_09_t1 ~ 1
bf06_14_t1 ~ 1
bf06_19_t1 ~ 1
bf06_24_t1 ~ 1
bf06_29_t1 ~ 1
bf06_34_t1 ~ 1
bf06_39_t1 ~ 1
bf06_44_t1 ~ 1
bf06_49_t1 ~ 1
bf06_54_t1 ~ 1
bf06_59_t1 ~ 1

bf06_04_t2 ~ i1*1
bf06_09_t2 ~ 1
bf06_14_t2 ~ 1
bf06_19_t2 ~ 1
bf06_24_t2 ~ 1
bf06_29_t2 ~ 1
bf06_34_t2 ~ 1
bf06_39_t2 ~ 1
bf06_44_t2 ~ 1
bf06_49_t2 ~ 1
bf06_54_t2 ~ 1
bf06_59_t2 ~ 1

# Unique Variances
bf06_04_t1 ~~ bf06_04_t1
bf06_09_t1 ~~ bf06_09_t1
bf06_14_t1 ~~ bf06_14_t1
bf06_19_t1 ~~ bf06_19_t1
bf06_24_t1 ~~ bf06_24_t1
bf06_29_t1 ~~ bf06_29_t1
bf06_34_t1 ~~ bf06_34_t1
bf06_39_t1 ~~ bf06_39_t1
bf06_44_t1 ~~ bf06_44_t1
bf06_49_t1 ~~ bf06_49_t1
bf06_54_t1 ~~ bf06_54_t1
bf06_59_t1 ~~ bf06_59_t1

bf06_04_t2 ~~ bf06_04_t2
bf06_09_t2 ~~ bf06_09_t2
bf06_14_t2 ~~ bf06_14_t2
bf06_19_t2 ~~ bf06_19_t2
bf06_24_t2 ~~ bf06_24_t2
bf06_29_t2 ~~ bf06_29_t2
bf06_34_t2 ~~ bf06_34_t2
bf06_39_t2 ~~ bf06_39_t2
bf06_44_t2 ~~ bf06_44_t2
bf06_49_t2 ~~ bf06_49_t2
bf06_54_t2 ~~ bf06_54_t2
bf06_59_t2 ~~ bf06_59_t2

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_configural_neuro_ideal <- cfa(configural_neuro_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_neuro_ideal, fit.measures = TRUE)

# Weak invariance model
weak_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*bf06_04_t1 + lambda1*bf06_04_t1 + lambda2*bf06_09_t1 + lambda3*bf06_14_t1 + lambda4*bf06_19_t1 + lambda5*bf06_24_t1 + lambda6*bf06_29_t1 + lambda7*bf06_34_t1 + lambda8*bf06_39_t1 + lambda9*bf06_44_t1 + lambda10*bf06_49_t1 + lambda11*bf06_54_t1 + lambda12*bf06_59_t1
neuro_ideal2 =~ NA*bf06_04_t2 + lambda1*bf06_04_t2 + lambda2*bf06_09_t2 + lambda3*bf06_14_t2 + lambda4*bf06_19_t2 + lambda5*bf06_24_t2 + lambda6*bf06_29_t2 + lambda7*bf06_34_t2 + lambda8*bf06_39_t2 + lambda9*bf06_44_t2 + lambda10*bf06_49_t2 + lambda11*bf06_54_t2 + lambda12*bf06_59_t2

# Intercepts
bf06_04_t1 ~ i1*1
bf06_09_t1 ~ 1
bf06_14_t1 ~ 1
bf06_19_t1 ~ 1
bf06_24_t1 ~ 1
bf06_29_t1 ~ 1
bf06_34_t1 ~ 1
bf06_39_t1 ~ 1
bf06_44_t1 ~ 1
bf06_49_t1 ~ 1
bf06_54_t1 ~ 1
bf06_59_t1 ~ 1

bf06_04_t2 ~ i1*1
bf06_09_t2 ~ 1
bf06_14_t2 ~ 1
bf06_19_t2 ~ 1
bf06_24_t2 ~ 1
bf06_29_t2 ~ 1
bf06_34_t2 ~ 1
bf06_39_t2 ~ 1
bf06_44_t2 ~ 1
bf06_49_t2 ~ 1
bf06_54_t2 ~ 1
bf06_59_t2 ~ 1

# Unique Variances
bf06_04_t1 ~~ bf06_04_t1
bf06_09_t1 ~~ bf06_09_t1
bf06_14_t1 ~~ bf06_14_t1
bf06_19_t1 ~~ bf06_19_t1
bf06_24_t1 ~~ bf06_24_t1
bf06_29_t1 ~~ bf06_29_t1
bf06_34_t1 ~~ bf06_34_t1
bf06_39_t1 ~~ bf06_39_t1
bf06_44_t1 ~~ bf06_44_t1
bf06_49_t1 ~~ bf06_49_t1
bf06_54_t1 ~~ bf06_54_t1
bf06_59_t1 ~~ bf06_59_t1

bf06_04_t2 ~~ bf06_04_t2
bf06_09_t2 ~~ bf06_09_t2
bf06_14_t2 ~~ bf06_14_t2
bf06_19_t2 ~~ bf06_19_t2
bf06_24_t2 ~~ bf06_24_t2
bf06_29_t2 ~~ bf06_29_t2
bf06_34_t2 ~~ bf06_34_t2
bf06_39_t2 ~~ bf06_39_t2
bf06_44_t2 ~~ bf06_44_t2
bf06_49_t2 ~~ bf06_49_t2
bf06_54_t2 ~~ bf06_54_t2
bf06_59_t2 ~~ bf06_59_t2

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_weak_neuro_ideal <- cfa(weak_neuro_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_neuro_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*bf06_04_t1 + lambda1*bf06_04_t1 + lambda2*bf06_09_t1 + lambda3*bf06_14_t1 + lambda4*bf06_19_t1 + lambda5*bf06_24_t1 + lambda6*bf06_29_t1 + lambda7*bf06_34_t1 + lambda8*bf06_39_t1 + lambda9*bf06_44_t1 + lambda10*bf06_49_t1 + lambda11*bf06_54_t1 + lambda12*bf06_59_t1
neuro_ideal2 =~ NA*bf06_04_t2 + lambda1*bf06_04_t2 + lambda2*bf06_09_t2 + lambda3*bf06_14_t2 + lambda4*bf06_19_t2 + lambda5*bf06_24_t2 + lambda6*bf06_29_t2 + lambda7*bf06_34_t2 + lambda8*bf06_39_t2 + lambda9*bf06_44_t2 + lambda10*bf06_49_t2 + lambda11*bf06_54_t2 + lambda12*bf06_59_t2

# Intercepts
bf06_04_t1 ~ i1*1
bf06_09_t1 ~ i2*1
bf06_14_t1 ~ i3*1
bf06_19_t1 ~ i4*1
bf06_24_t1 ~ i5*1
bf06_29_t1 ~ i6*1
bf06_34_t1 ~ i7*1
bf06_39_t1 ~ i8*1
bf06_44_t1 ~ i9*1
bf06_49_t1 ~ i10*1
bf06_54_t1 ~ i11*1
bf06_59_t1 ~ i12*1

bf06_04_t2 ~ i1*1
bf06_09_t2 ~ i2*1
bf06_14_t2 ~ i3*1
bf06_19_t2 ~ i4*1
bf06_24_t2 ~ i5*1
bf06_29_t2 ~ i6*1
bf06_34_t2 ~ i7*1
bf06_39_t2 ~ i8*1
bf06_44_t2 ~ i9*1
bf06_49_t2 ~ i10*1
bf06_54_t2 ~ i11*1
bf06_59_t2 ~ i12*1

# Unique Variances
bf06_04_t1 ~~ bf06_04_t1
bf06_09_t1 ~~ bf06_09_t1
bf06_14_t1 ~~ bf06_14_t1
bf06_19_t1 ~~ bf06_19_t1
bf06_24_t1 ~~ bf06_24_t1
bf06_29_t1 ~~ bf06_29_t1
bf06_34_t1 ~~ bf06_34_t1
bf06_39_t1 ~~ bf06_39_t1
bf06_44_t1 ~~ bf06_44_t1
bf06_49_t1 ~~ bf06_49_t1
bf06_54_t1 ~~ bf06_54_t1
bf06_59_t1 ~~ bf06_59_t1

bf06_04_t2 ~~ bf06_04_t2
bf06_09_t2 ~~ bf06_09_t2
bf06_14_t2 ~~ bf06_14_t2
bf06_19_t2 ~~ bf06_19_t2
bf06_24_t2 ~~ bf06_24_t2
bf06_29_t2 ~~ bf06_29_t2
bf06_34_t2 ~~ bf06_34_t2
bf06_39_t2 ~~ bf06_39_t2
bf06_44_t2 ~~ bf06_44_t2
bf06_49_t2 ~~ bf06_49_t2
bf06_54_t2 ~~ bf06_54_t2
bf06_59_t2 ~~ bf06_59_t2

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_strong_neuro_ideal <- cfa(strong_neuro_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_neuro_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*bf06_04_t1 + lambda1*bf06_04_t1 + lambda2*bf06_09_t1 + lambda3*bf06_14_t1 + lambda4*bf06_19_t1 + lambda5*bf06_24_t1 + lambda6*bf06_29_t1 + lambda7*bf06_34_t1 + lambda8*bf06_39_t1 + lambda9*bf06_44_t1 + lambda10*bf06_49_t1 + lambda11*bf06_54_t1 + lambda12*bf06_59_t1
neuro_ideal2 =~ NA*bf06_04_t2 + lambda1*bf06_04_t2 + lambda2*bf06_09_t2 + lambda3*bf06_14_t2 + lambda4*bf06_19_t2 + lambda5*bf06_24_t2 + lambda6*bf06_29_t2 + lambda7*bf06_34_t2 + lambda8*bf06_39_t2 + lambda9*bf06_44_t2 + lambda10*bf06_49_t2 + lambda11*bf06_54_t2 + lambda12*bf06_59_t2

# Intercepts
bf06_04_t1 ~ i1*1
bf06_09_t1 ~ i2*1
bf06_14_t1 ~ i3*1
bf06_19_t1 ~ i4*1
bf06_24_t1 ~ i5*1
bf06_29_t1 ~ i6*1
bf06_34_t1 ~ i7*1
bf06_39_t1 ~ i8*1
bf06_44_t1 ~ i9*1
bf06_49_t1 ~ i10*1
bf06_54_t1 ~ i11*1
bf06_59_t1 ~ i12*1

bf06_04_t2 ~ i1*1
bf06_09_t2 ~ i2*1
bf06_14_t2 ~ i3*1
bf06_19_t2 ~ i4*1
bf06_24_t2 ~ i5*1
bf06_29_t2 ~ i6*1
bf06_34_t2 ~ i7*1
bf06_39_t2 ~ i8*1
bf06_44_t2 ~ i9*1
bf06_49_t2 ~ i10*1
bf06_54_t2 ~ i11*1
bf06_59_t2 ~ i12*1

# Unique Variances
bf06_04_t1 ~~ u1*bf06_04_t1
bf06_09_t1 ~~ u2*bf06_09_t1
bf06_14_t1 ~~ u3*bf06_14_t1
bf06_19_t1 ~~ u4*bf06_19_t1
bf06_24_t1 ~~ u5*bf06_24_t1
bf06_29_t1 ~~ u6*bf06_29_t1
bf06_34_t1 ~~ u7*bf06_34_t1
bf06_39_t1 ~~ u8*bf06_39_t1
bf06_44_t1 ~~ u9*bf06_44_t1
bf06_49_t1 ~~ u10*bf06_49_t1
bf06_54_t1 ~~ u11*bf06_54_t1
bf06_59_t1 ~~ u12*bf06_59_t1

bf06_04_t2 ~~ u1*bf06_04_t2
bf06_09_t2 ~~ u2*bf06_09_t2
bf06_14_t2 ~~ u3*bf06_14_t2
bf06_19_t2 ~~ u4*bf06_19_t2
bf06_24_t2 ~~ u5*bf06_24_t2
bf06_29_t2 ~~ u6*bf06_29_t2
bf06_34_t2 ~~ u7*bf06_34_t2
bf06_39_t2 ~~ u8*bf06_39_t2
bf06_44_t2 ~~ u9*bf06_44_t2
bf06_49_t2 ~~ u10*bf06_49_t2
bf06_54_t2 ~~ u11*bf06_54_t2
bf06_59_t2 ~~ u12*bf06_59_t2

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_strict_neuro_ideal <- cfa(strict_neuro_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_neuro_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   625    73  896. 36469. 36793. 0.803 0.783 0.0641 0.0542
2 weak         625    62  909. 36460. 36735. 0.802 0.792 0.0629 0.0571
3 strong       625    51  920. 36449. 36675. 0.802 0.800 0.0616 0.0576
4 strict       625    39  959. 36463. 36637. 0.794 0.801 0.0615 0.0720
# chi-square difference test for nested models 
anova(fit_configural_neuro_ideal, fit_weak_neuro_ideal)

Chi-Squared Difference Test

                            Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_configural_neuro_ideal 251 36469 36793 896.03                            
fit_weak_neuro_ideal       262 36460 36735 909.29     13.258 0.018121      11
                           Pr(>Chisq)
fit_configural_neuro_ideal           
fit_weak_neuro_ideal           0.2768
anova(fit_weak_neuro_ideal, fit_strong_neuro_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_weak_neuro_ideal   262 36460 36735 909.29                         
fit_strong_neuro_ideal 273 36449 36675 920.20      10.92     0      11
                       Pr(>Chisq)
fit_weak_neuro_ideal             
fit_strong_neuro_ideal       0.45
anova(fit_strong_neuro_ideal, fit_strict_neuro_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_neuro_ideal 273 36449 36675 920.20                            
fit_strict_neuro_ideal 285 36463 36637 958.82     38.614 0.059569      12
                       Pr(>Chisq)    
fit_strong_neuro_ideal               
fit_strict_neuro_ideal  0.0001218 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Also relatively bad model fit in the different fit indices. Chi^2 tests indicate strong measurement invariance.

3.5.9 Openness: current-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*bf05_05_t1 + lambda1*bf05_05_t1 + bf05_10_t1 + bf05_15_t1 + bf05_20_t1 + bf05_25_t1 + bf05_30_t1 + bf05_35_t1 + bf05_40_t1 + bf05_45_t1 + bf05_50_t1 + bf05_55_t1 + bf05_60_t1
openn_curr2 =~ NA*bf05_05_t2 + lambda1*bf05_05_t2 + bf05_10_t2 + bf05_15_t2 + bf05_20_t2 + bf05_25_t2 + bf05_30_t2 + bf05_35_t2 + bf05_40_t2 + bf05_45_t2 + bf05_50_t2 + bf05_55_t2 + bf05_60_t2

# Intercepts
bf05_05_t1 ~ i1*1
bf05_10_t1 ~ 1
bf05_15_t1 ~ 1
bf05_20_t1 ~ 1
bf05_25_t1 ~ 1
bf05_30_t1 ~ 1
bf05_35_t1 ~ 1
bf05_40_t1 ~ 1
bf05_45_t1 ~ 1
bf05_50_t1 ~ 1
bf05_55_t1 ~ 1
bf05_60_t1 ~ 1

bf05_05_t2 ~ i1*1
bf05_10_t2 ~ 1
bf05_15_t2 ~ 1
bf05_20_t2 ~ 1
bf05_25_t2 ~ 1
bf05_30_t2 ~ 1
bf05_35_t2 ~ 1
bf05_40_t2 ~ 1
bf05_45_t2 ~ 1
bf05_50_t2 ~ 1
bf05_55_t2 ~ 1
bf05_60_t2 ~ 1

# Unique Variances
bf05_05_t1 ~~ bf05_05_t1
bf05_10_t1 ~~ bf05_10_t1
bf05_15_t1 ~~ bf05_15_t1
bf05_20_t1 ~~ bf05_20_t1
bf05_25_t1 ~~ bf05_25_t1
bf05_30_t1 ~~ bf05_30_t1
bf05_35_t1 ~~ bf05_35_t1
bf05_40_t1 ~~ bf05_40_t1
bf05_45_t1 ~~ bf05_45_t1
bf05_50_t1 ~~ bf05_50_t1
bf05_55_t1 ~~ bf05_55_t1
bf05_60_t1 ~~ bf05_60_t1

bf05_05_t2 ~~ bf05_05_t2
bf05_10_t2 ~~ bf05_10_t2
bf05_15_t2 ~~ bf05_15_t2
bf05_20_t2 ~~ bf05_20_t2
bf05_25_t2 ~~ bf05_25_t2
bf05_30_t2 ~~ bf05_30_t2
bf05_35_t2 ~~ bf05_35_t2
bf05_40_t2 ~~ bf05_40_t2
bf05_45_t2 ~~ bf05_45_t2
bf05_50_t2 ~~ bf05_50_t2
bf05_55_t2 ~~ bf05_55_t2
bf05_60_t2 ~~ bf05_60_t2

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_configural_openn_curr <- cfa(configural_openn_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_openn_curr, fit.measures = TRUE)

# Weak invariance model
weak_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*bf05_05_t1 + lambda1*bf05_05_t1 + lambda2*bf05_10_t1 + lambda3*bf05_15_t1 + lambda4*bf05_20_t1 + lambda5*bf05_25_t1 + lambda6*bf05_30_t1 + lambda7*bf05_35_t1 + lambda8*bf05_40_t1 + lambda9*bf05_45_t1 + lambda10*bf05_50_t1 + lambda11*bf05_55_t1 + lambda12*bf05_60_t1
openn_curr2 =~ NA*bf05_05_t2 + lambda1*bf05_05_t2 + lambda2*bf05_10_t2 + lambda3*bf05_15_t2 + lambda4*bf05_20_t2 + lambda5*bf05_25_t2 + lambda6*bf05_30_t2 + lambda7*bf05_35_t2 + lambda8*bf05_40_t2 + lambda9*bf05_45_t2 + lambda10*bf05_50_t2 + lambda11*bf05_55_t2 + lambda12*bf05_60_t2

# Intercepts
bf05_05_t1 ~ i1*1
bf05_10_t1 ~ 1
bf05_15_t1 ~ 1
bf05_20_t1 ~ 1
bf05_25_t1 ~ 1
bf05_30_t1 ~ 1
bf05_35_t1 ~ 1
bf05_40_t1 ~ 1
bf05_45_t1 ~ 1
bf05_50_t1 ~ 1
bf05_55_t1 ~ 1
bf05_60_t1 ~ 1

bf05_05_t2 ~ i1*1
bf05_10_t2 ~ 1
bf05_15_t2 ~ 1
bf05_20_t2 ~ 1
bf05_25_t2 ~ 1
bf05_30_t2 ~ 1
bf05_35_t2 ~ 1
bf05_40_t2 ~ 1
bf05_45_t2 ~ 1
bf05_50_t2 ~ 1
bf05_55_t2 ~ 1
bf05_60_t2 ~ 1

# Unique Variances
bf05_05_t1 ~~ bf05_05_t1
bf05_10_t1 ~~ bf05_10_t1
bf05_15_t1 ~~ bf05_15_t1
bf05_20_t1 ~~ bf05_20_t1
bf05_25_t1 ~~ bf05_25_t1
bf05_30_t1 ~~ bf05_30_t1
bf05_35_t1 ~~ bf05_35_t1
bf05_40_t1 ~~ bf05_40_t1
bf05_45_t1 ~~ bf05_45_t1
bf05_50_t1 ~~ bf05_50_t1
bf05_55_t1 ~~ bf05_55_t1
bf05_60_t1 ~~ bf05_60_t1

bf05_05_t2 ~~ bf05_05_t2
bf05_10_t2 ~~ bf05_10_t2
bf05_15_t2 ~~ bf05_15_t2
bf05_20_t2 ~~ bf05_20_t2
bf05_25_t2 ~~ bf05_25_t2
bf05_30_t2 ~~ bf05_30_t2
bf05_35_t2 ~~ bf05_35_t2
bf05_40_t2 ~~ bf05_40_t2
bf05_45_t2 ~~ bf05_45_t2
bf05_50_t2 ~~ bf05_50_t2
bf05_55_t2 ~~ bf05_55_t2
bf05_60_t2 ~~ bf05_60_t2

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_weak_openn_curr <- cfa(weak_openn_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_openn_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*bf05_05_t1 + lambda1*bf05_05_t1 + lambda2*bf05_10_t1 + lambda3*bf05_15_t1 + lambda4*bf05_20_t1 + lambda5*bf05_25_t1 + lambda6*bf05_30_t1 + lambda7*bf05_35_t1 + lambda8*bf05_40_t1 + lambda9*bf05_45_t1 + lambda10*bf05_50_t1 + lambda11*bf05_55_t1 + lambda12*bf05_60_t1
openn_curr2 =~ NA*bf05_05_t2 + lambda1*bf05_05_t2 + lambda2*bf05_10_t2 + lambda3*bf05_15_t2 + lambda4*bf05_20_t2 + lambda5*bf05_25_t2 + lambda6*bf05_30_t2 + lambda7*bf05_35_t2 + lambda8*bf05_40_t2 + lambda9*bf05_45_t2 + lambda10*bf05_50_t2 + lambda11*bf05_55_t2 + lambda12*bf05_60_t2

# Intercepts
bf05_05_t1 ~ i1*1
bf05_10_t1 ~ i2*1
bf05_15_t1 ~ i3*1
bf05_20_t1 ~ i4*1
bf05_25_t1 ~ i5*1
bf05_30_t1 ~ i6*1
bf05_35_t1 ~ i7*1
bf05_40_t1 ~ i8*1
bf05_45_t1 ~ i9*1
bf05_50_t1 ~ i10*1
bf05_55_t1 ~ i11*1
bf05_60_t1 ~ i12*1

bf05_05_t2 ~ i1*1
bf05_10_t2 ~ i2*1
bf05_15_t2 ~ i3*1
bf05_20_t2 ~ i4*1
bf05_25_t2 ~ i5*1
bf05_30_t2 ~ i6*1
bf05_35_t2 ~ i7*1
bf05_40_t2 ~ i8*1
bf05_45_t2 ~ i9*1
bf05_50_t2 ~ i10*1
bf05_55_t2 ~ i11*1
bf05_60_t2 ~ i12*1

# Unique Variances
bf05_05_t1 ~~ bf05_05_t1
bf05_10_t1 ~~ bf05_10_t1
bf05_15_t1 ~~ bf05_15_t1
bf05_20_t1 ~~ bf05_20_t1
bf05_25_t1 ~~ bf05_25_t1
bf05_30_t1 ~~ bf05_30_t1
bf05_35_t1 ~~ bf05_35_t1
bf05_40_t1 ~~ bf05_40_t1
bf05_45_t1 ~~ bf05_45_t1
bf05_50_t1 ~~ bf05_50_t1
bf05_55_t1 ~~ bf05_55_t1
bf05_60_t1 ~~ bf05_60_t1

bf05_05_t2 ~~ bf05_05_t2
bf05_10_t2 ~~ bf05_10_t2
bf05_15_t2 ~~ bf05_15_t2
bf05_20_t2 ~~ bf05_20_t2
bf05_25_t2 ~~ bf05_25_t2
bf05_30_t2 ~~ bf05_30_t2
bf05_35_t2 ~~ bf05_35_t2
bf05_40_t2 ~~ bf05_40_t2
bf05_45_t2 ~~ bf05_45_t2
bf05_50_t2 ~~ bf05_50_t2
bf05_55_t2 ~~ bf05_55_t2
bf05_60_t2 ~~ bf05_60_t2

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_strong_openn_curr <- cfa(strong_openn_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_openn_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*bf05_05_t1 + lambda1*bf05_05_t1 + lambda2*bf05_10_t1 + lambda3*bf05_15_t1 + lambda4*bf05_20_t1 + lambda5*bf05_25_t1 + lambda6*bf05_30_t1 + lambda7*bf05_35_t1 + lambda8*bf05_40_t1 + lambda9*bf05_45_t1 + lambda10*bf05_50_t1 + lambda11*bf05_55_t1 + lambda12*bf05_60_t1
openn_curr2 =~ NA*bf05_05_t2 + lambda1*bf05_05_t2 + lambda2*bf05_10_t2 + lambda3*bf05_15_t2 + lambda4*bf05_20_t2 + lambda5*bf05_25_t2 + lambda6*bf05_30_t2 + lambda7*bf05_35_t2 + lambda8*bf05_40_t2 + lambda9*bf05_45_t2 + lambda10*bf05_50_t2 + lambda11*bf05_55_t2 + lambda12*bf05_60_t2

# Intercepts
bf05_05_t1 ~ i1*1
bf05_10_t1 ~ i2*1
bf05_15_t1 ~ i3*1
bf05_20_t1 ~ i4*1
bf05_25_t1 ~ i5*1
bf05_30_t1 ~ i6*1
bf05_35_t1 ~ i7*1
bf05_40_t1 ~ i8*1
bf05_45_t1 ~ i9*1
bf05_50_t1 ~ i10*1
bf05_55_t1 ~ i11*1
bf05_60_t1 ~ i12*1

bf05_05_t2 ~ i1*1
bf05_10_t2 ~ i2*1
bf05_15_t2 ~ i3*1
bf05_20_t2 ~ i4*1
bf05_25_t2 ~ i5*1
bf05_30_t2 ~ i6*1
bf05_35_t2 ~ i7*1
bf05_40_t2 ~ i8*1
bf05_45_t2 ~ i9*1
bf05_50_t2 ~ i10*1
bf05_55_t2 ~ i11*1
bf05_60_t2 ~ i12*1

# Unique Variances
bf05_05_t1 ~~ u1*bf05_05_t1
bf05_10_t1 ~~ u2*bf05_10_t1
bf05_15_t1 ~~ u3*bf05_15_t1
bf05_20_t1 ~~ u4*bf05_20_t1
bf05_25_t1 ~~ u5*bf05_25_t1
bf05_30_t1 ~~ u6*bf05_30_t1
bf05_35_t1 ~~ u7*bf05_35_t1
bf05_40_t1 ~~ u8*bf05_40_t1
bf05_45_t1 ~~ u9*bf05_45_t1
bf05_50_t1 ~~ u10*bf05_50_t1
bf05_55_t1 ~~ u11*bf05_55_t1
bf05_60_t1 ~~ u12*bf05_60_t1

bf05_05_t2 ~~ u1*bf05_05_t2
bf05_10_t2 ~~ u2*bf05_10_t2
bf05_15_t2 ~~ u3*bf05_15_t2
bf05_20_t2 ~~ u4*bf05_20_t2
bf05_25_t2 ~~ u5*bf05_25_t2
bf05_30_t2 ~~ u6*bf05_30_t2
bf05_35_t2 ~~ u7*bf05_35_t2
bf05_40_t2 ~~ u8*bf05_40_t2
bf05_45_t2 ~~ u9*bf05_45_t2
bf05_50_t2 ~~ u10*bf05_50_t2
bf05_55_t2 ~~ u11*bf05_55_t2
bf05_60_t2 ~~ u12*bf05_60_t2

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_strict_openn_curr <- cfa(strict_openn_curr, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_openn_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea  srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>
1 configural   625    73 2999. 42613. 42937. 0.531 0.484 0.132 0.102
2 weak         625    62 3006. 42598. 42873. 0.532 0.507 0.129 0.103
3 strong       625    51 3017. 42587. 42814. 0.532 0.527 0.127 0.103
4 strict       625    39 3050. 42596. 42769. 0.528 0.543 0.125 0.108
# chi-square difference test for nested models 
anova(fit_configural_openn_curr, fit_weak_openn_curr)

Chi-Squared Difference Test

                           Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_openn_curr 251 42613 42937 2999.3                         
fit_weak_openn_curr       262 42598 42873 3005.9     6.5676     0      11
                          Pr(>Chisq)
fit_configural_openn_curr           
fit_weak_openn_curr           0.8329
anova(fit_weak_openn_curr, fit_strong_openn_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff     RMSEA Df diff
fit_weak_openn_curr   262 42598 42873 3005.9                             
fit_strong_openn_curr 273 42587 42814 3017.2     11.296 0.0065675      11
                      Pr(>Chisq)
fit_weak_openn_curr             
fit_strong_openn_curr     0.4188
anova(fit_strong_openn_curr, fit_strict_openn_curr)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_openn_curr 273 42587 42814 3017.2                            
fit_strict_openn_curr 285 42596 42769 3049.6     32.392 0.052144      12
                      Pr(>Chisq)   
fit_strong_openn_curr              
fit_strict_openn_curr   0.001203 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Very bad model fit. Chi^2 tests indicate strong measurement invariance.

3.5.10 Openness: ideal-self

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*bf06_05_t1 + lambda1*bf06_05_t1 + bf06_10_t1 + bf06_15_t1 + bf06_20_t1 + bf06_25_t1 + bf06_30_t1 + bf06_35_t1 + bf06_40_t1 + bf06_45_t1 + bf06_50_t1 + bf06_55_t1 + bf06_60_t1
openn_ideal2 =~ NA*bf06_05_t2 + lambda1*bf06_05_t2 + bf06_10_t2 + bf06_15_t2 + bf06_20_t2 + bf06_25_t2 + bf06_30_t2 + bf06_35_t2 + bf06_40_t2 + bf06_45_t2 + bf06_50_t2 + bf06_55_t2 + bf06_60_t2

# Intercepts
bf06_05_t1 ~ i1*1
bf06_10_t1 ~ 1
bf06_15_t1 ~ 1
bf06_20_t1 ~ 1
bf06_25_t1 ~ 1
bf06_30_t1 ~ 1
bf06_35_t1 ~ 1
bf06_40_t1 ~ 1
bf06_45_t1 ~ 1
bf06_50_t1 ~ 1
bf06_55_t1 ~ 1
bf06_60_t1 ~ 1

bf06_05_t2 ~ i1*1
bf06_10_t2 ~ 1
bf06_15_t2 ~ 1
bf06_20_t2 ~ 1
bf06_25_t2 ~ 1
bf06_30_t2 ~ 1
bf06_35_t2 ~ 1
bf06_40_t2 ~ 1
bf06_45_t2 ~ 1
bf06_50_t2 ~ 1
bf06_55_t2 ~ 1
bf06_60_t2 ~ 1

# Unique Variances
bf06_05_t1 ~~ bf06_05_t1
bf06_10_t1 ~~ bf06_10_t1
bf06_15_t1 ~~ bf06_15_t1
bf06_20_t1 ~~ bf06_20_t1
bf06_25_t1 ~~ bf06_25_t1
bf06_30_t1 ~~ bf06_30_t1
bf06_35_t1 ~~ bf06_35_t1
bf06_40_t1 ~~ bf06_40_t1
bf06_45_t1 ~~ bf06_45_t1
bf06_50_t1 ~~ bf06_50_t1
bf06_55_t1 ~~ bf06_55_t1
bf06_60_t1 ~~ bf06_60_t1

bf06_05_t2 ~~ bf06_05_t2
bf06_10_t2 ~~ bf06_10_t2
bf06_15_t2 ~~ bf06_15_t2
bf06_20_t2 ~~ bf06_20_t2
bf06_25_t2 ~~ bf06_25_t2
bf06_30_t2 ~~ bf06_30_t2
bf06_35_t2 ~~ bf06_35_t2
bf06_40_t2 ~~ bf06_40_t2
bf06_45_t2 ~~ bf06_45_t2
bf06_50_t2 ~~ bf06_50_t2
bf06_55_t2 ~~ bf06_55_t2
bf06_60_t2 ~~ bf06_60_t2

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_configural_openn_ideal <- cfa(configural_openn_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_configural_openn_ideal, fit.measures = TRUE)

# Weak invariance model
weak_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*bf06_05_t1 + lambda1*bf06_05_t1 + lambda2*bf06_10_t1 + lambda3*bf06_15_t1 + lambda4*bf06_20_t1 + lambda5*bf06_25_t1 + lambda6*bf06_30_t1 + lambda7*bf06_35_t1 + lambda8*bf06_40_t1 + lambda9*bf06_45_t1 + lambda10*bf06_50_t1 + lambda11*bf06_55_t1 + lambda12*bf06_60_t1
openn_ideal2 =~ NA*bf06_05_t2 + lambda1*bf06_05_t2 + lambda2*bf06_10_t2 + lambda3*bf06_15_t2 + lambda4*bf06_20_t2 + lambda5*bf06_25_t2 + lambda6*bf06_30_t2 + lambda7*bf06_35_t2 + lambda8*bf06_40_t2 + lambda9*bf06_45_t2 + lambda10*bf06_50_t2 + lambda11*bf06_55_t2 + lambda12*bf06_60_t2

# Intercepts
bf06_05_t1 ~ i1*1
bf06_10_t1 ~ 1
bf06_15_t1 ~ 1
bf06_20_t1 ~ 1
bf06_25_t1 ~ 1
bf06_30_t1 ~ 1
bf06_35_t1 ~ 1
bf06_40_t1 ~ 1
bf06_45_t1 ~ 1
bf06_50_t1 ~ 1
bf06_55_t1 ~ 1
bf06_60_t1 ~ 1

bf06_05_t2 ~ i1*1
bf06_10_t2 ~ 1
bf06_15_t2 ~ 1
bf06_20_t2 ~ 1
bf06_25_t2 ~ 1
bf06_30_t2 ~ 1
bf06_35_t2 ~ 1
bf06_40_t2 ~ 1
bf06_45_t2 ~ 1
bf06_50_t2 ~ 1
bf06_55_t2 ~ 1
bf06_60_t2 ~ 1

# Unique Variances
bf06_05_t1 ~~ bf06_05_t1
bf06_10_t1 ~~ bf06_10_t1
bf06_15_t1 ~~ bf06_15_t1
bf06_20_t1 ~~ bf06_20_t1
bf06_25_t1 ~~ bf06_25_t1
bf06_30_t1 ~~ bf06_30_t1
bf06_35_t1 ~~ bf06_35_t1
bf06_40_t1 ~~ bf06_40_t1
bf06_45_t1 ~~ bf06_45_t1
bf06_50_t1 ~~ bf06_50_t1
bf06_55_t1 ~~ bf06_55_t1
bf06_60_t1 ~~ bf06_60_t1

bf06_05_t2 ~~ bf06_05_t2
bf06_10_t2 ~~ bf06_10_t2
bf06_15_t2 ~~ bf06_15_t2
bf06_20_t2 ~~ bf06_20_t2
bf06_25_t2 ~~ bf06_25_t2
bf06_30_t2 ~~ bf06_30_t2
bf06_35_t2 ~~ bf06_35_t2
bf06_40_t2 ~~ bf06_40_t2
bf06_45_t2 ~~ bf06_45_t2
bf06_50_t2 ~~ bf06_50_t2
bf06_55_t2 ~~ bf06_55_t2
bf06_60_t2 ~~ bf06_60_t2

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_weak_openn_ideal <- cfa(weak_openn_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_weak_openn_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*bf06_05_t1 + lambda1*bf06_05_t1 + lambda2*bf06_10_t1 + lambda3*bf06_15_t1 + lambda4*bf06_20_t1 + lambda5*bf06_25_t1 + lambda6*bf06_30_t1 + lambda7*bf06_35_t1 + lambda8*bf06_40_t1 + lambda9*bf06_45_t1 + lambda10*bf06_50_t1 + lambda11*bf06_55_t1 + lambda12*bf06_60_t1
openn_ideal2 =~ NA*bf06_05_t2 + lambda1*bf06_05_t2 + lambda2*bf06_10_t2 + lambda3*bf06_15_t2 + lambda4*bf06_20_t2 + lambda5*bf06_25_t2 + lambda6*bf06_30_t2 + lambda7*bf06_35_t2 + lambda8*bf06_40_t2 + lambda9*bf06_45_t2 + lambda10*bf06_50_t2 + lambda11*bf06_55_t2 + lambda12*bf06_60_t2

# Intercepts
bf06_05_t1 ~ i1*1
bf06_10_t1 ~ i2*1
bf06_15_t1 ~ i3*1
bf06_20_t1 ~ i4*1
bf06_25_t1 ~ i5*1
bf06_30_t1 ~ i6*1
bf06_35_t1 ~ i7*1
bf06_40_t1 ~ i8*1
bf06_45_t1 ~ i9*1
bf06_50_t1 ~ i10*1
bf06_55_t1 ~ i11*1
bf06_60_t1 ~ i12*1

bf06_05_t2 ~ i1*1
bf06_10_t2 ~ i2*1
bf06_15_t2 ~ i3*1
bf06_20_t2 ~ i4*1
bf06_25_t2 ~ i5*1
bf06_30_t2 ~ i6*1
bf06_35_t2 ~ i7*1
bf06_40_t2 ~ i8*1
bf06_45_t2 ~ i9*1
bf06_50_t2 ~ i10*1
bf06_55_t2 ~ i11*1
bf06_60_t2 ~ i12*1

# Unique Variances
bf06_05_t1 ~~ bf06_05_t1
bf06_10_t1 ~~ bf06_10_t1
bf06_15_t1 ~~ bf06_15_t1
bf06_20_t1 ~~ bf06_20_t1
bf06_25_t1 ~~ bf06_25_t1
bf06_30_t1 ~~ bf06_30_t1
bf06_35_t1 ~~ bf06_35_t1
bf06_40_t1 ~~ bf06_40_t1
bf06_45_t1 ~~ bf06_45_t1
bf06_50_t1 ~~ bf06_50_t1
bf06_55_t1 ~~ bf06_55_t1
bf06_60_t1 ~~ bf06_60_t1

bf06_05_t2 ~~ bf06_05_t2
bf06_10_t2 ~~ bf06_10_t2
bf06_15_t2 ~~ bf06_15_t2
bf06_20_t2 ~~ bf06_20_t2
bf06_25_t2 ~~ bf06_25_t2
bf06_30_t2 ~~ bf06_30_t2
bf06_35_t2 ~~ bf06_35_t2
bf06_40_t2 ~~ bf06_40_t2
bf06_45_t2 ~~ bf06_45_t2
bf06_50_t2 ~~ bf06_50_t2
bf06_55_t2 ~~ bf06_55_t2
bf06_60_t2 ~~ bf06_60_t2

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_strong_openn_ideal <- cfa(strong_openn_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strong_openn_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*bf06_05_t1 + lambda1*bf06_05_t1 + lambda2*bf06_10_t1 + lambda3*bf06_15_t1 + lambda4*bf06_20_t1 + lambda5*bf06_25_t1 + lambda6*bf06_30_t1 + lambda7*bf06_35_t1 + lambda8*bf06_40_t1 + lambda9*bf06_45_t1 + lambda10*bf06_50_t1 + lambda11*bf06_55_t1 + lambda12*bf06_60_t1
openn_ideal2 =~ NA*bf06_05_t2 + lambda1*bf06_05_t2 + lambda2*bf06_10_t2 + lambda3*bf06_15_t2 + lambda4*bf06_20_t2 + lambda5*bf06_25_t2 + lambda6*bf06_30_t2 + lambda7*bf06_35_t2 + lambda8*bf06_40_t2 + lambda9*bf06_45_t2 + lambda10*bf06_50_t2 + lambda11*bf06_55_t2 + lambda12*bf06_60_t2

# Intercepts
bf06_05_t1 ~ i1*1
bf06_10_t1 ~ i2*1
bf06_15_t1 ~ i3*1
bf06_20_t1 ~ i4*1
bf06_25_t1 ~ i5*1
bf06_30_t1 ~ i6*1
bf06_35_t1 ~ i7*1
bf06_40_t1 ~ i8*1
bf06_45_t1 ~ i9*1
bf06_50_t1 ~ i10*1
bf06_55_t1 ~ i11*1
bf06_60_t1 ~ i12*1

bf06_05_t2 ~ i1*1
bf06_10_t2 ~ i2*1
bf06_15_t2 ~ i3*1
bf06_20_t2 ~ i4*1
bf06_25_t2 ~ i5*1
bf06_30_t2 ~ i6*1
bf06_35_t2 ~ i7*1
bf06_40_t2 ~ i8*1
bf06_45_t2 ~ i9*1
bf06_50_t2 ~ i10*1
bf06_55_t2 ~ i11*1
bf06_60_t2 ~ i12*1

# Unique Variances
bf06_05_t1 ~~ u1*bf06_05_t1
bf06_10_t1 ~~ u2*bf06_10_t1
bf06_15_t1 ~~ u3*bf06_15_t1
bf06_20_t1 ~~ u4*bf06_20_t1
bf06_25_t1 ~~ u5*bf06_25_t1
bf06_30_t1 ~~ u6*bf06_30_t1
bf06_35_t1 ~~ u7*bf06_35_t1
bf06_40_t1 ~~ u8*bf06_40_t1
bf06_45_t1 ~~ u9*bf06_45_t1
bf06_50_t1 ~~ u10*bf06_50_t1
bf06_55_t1 ~~ u11*bf06_55_t1
bf06_60_t1 ~~ u12*bf06_60_t1

bf06_05_t2 ~~ u1*bf06_05_t2
bf06_10_t2 ~~ u2*bf06_10_t2
bf06_15_t2 ~~ u3*bf06_15_t2
bf06_20_t2 ~~ u4*bf06_20_t2
bf06_25_t2 ~~ u5*bf06_25_t2
bf06_30_t2 ~~ u6*bf06_30_t2
bf06_35_t2 ~~ u7*bf06_35_t2
bf06_40_t2 ~~ u8*bf06_40_t2
bf06_45_t2 ~~ u9*bf06_45_t2
bf06_50_t2 ~~ u10*bf06_50_t2
bf06_55_t2 ~~ u11*bf06_55_t2
bf06_60_t2 ~~ u12*bf06_60_t2

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_strict_openn_ideal <- cfa(strict_openn_ideal, data = df_sbsa_wide_pers, mimic = "mplus")
summary(fit_strict_openn_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   625    73 1641. 39841. 40165. 0.652 0.617 0.0941 0.0783
2 weak         625    62 1649. 39827. 40103. 0.653 0.634 0.0920 0.0799
3 strong       625    51 1656. 39812. 40039. 0.654 0.650 0.0900 0.0800
4 strict       625    39 1674. 39806. 39979. 0.652 0.663 0.0883 0.0838
# chi-square difference test for nested models 
anova(fit_configural_openn_ideal, fit_weak_openn_ideal)

Chi-Squared Difference Test

                            Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_openn_ideal 251 39841 40165 1640.8                         
fit_weak_openn_ideal       262 39827 40103 1649.1     8.3446     0      11
                           Pr(>Chisq)
fit_configural_openn_ideal           
fit_weak_openn_ideal           0.6821
anova(fit_weak_openn_ideal, fit_strong_openn_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff
fit_weak_openn_ideal   262 39827 40103 1649.1                         
fit_strong_openn_ideal 273 39812 40039 1656.0      6.874     0      11
                       Pr(>Chisq)
fit_weak_openn_ideal             
fit_strong_openn_ideal     0.8092
anova(fit_strong_openn_ideal, fit_strict_openn_ideal)

Chi-Squared Difference Test

                        Df   AIC   BIC Chisq Chisq diff    RMSEA Df diff
fit_strong_openn_ideal 273 39812 40039  1656                            
fit_strict_openn_ideal 285 39806 39979  1674     18.035 0.028367      12
                       Pr(>Chisq)
fit_strong_openn_ideal           
fit_strict_openn_ideal     0.1146

Still very bad model fit. Strong measurement invariance according to chi^2 tests.


3.6 Hypothesis 4: Change goals and change in personality (current / ideal) in skill-building group

In the skill-building group, there will be a correlation between change goals and change in current-self ratings but not change in ideal-self ratings.

We will test this one domain/facet at a time. We will use both general continuous change goal score as well as trait-specific change goals. To test this hypothesis, we will estimate the mean-level differences across time for both current and ideal trait ratings using latent change models and correlate change goals with the change variable from those models.

Reshape and split data set by intervention group:

Show the code
df_sbsa_wide_pers_sb <- df_sbsa %>% 
  filter(rando=="Skill-Building") %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("bf05", "bf06", 
                                  "sb07")), # facet-specific change goals
         sb06_01) %>% # general change goal
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with(c("bf05", "bf06", "sb07")), sb06_01)) %>% 
  select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, 
            sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, 
            sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, sb06_01_t2))
colnames(df_sbsa_wide_pers_sb)

3.6.1 Big Five traits

3.6.1.1 Extraversion - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_curr_hyp4 <- '
extra_t1 =~ 1*bf05_01_t1 + lamb2*bf05_06_t1 + lamb3*bf05_11_t1 + lamb4*bf05_16_t1 + lamb5*bf05_21_t1 + lamb6*bf05_26_t1 + lamb7*bf05_31_t1 + lamb8*bf05_36_t1 + lamb9*bf05_41_t1 + lamb10*bf05_46_t1 + lamb11*bf05_51_t1 + lamb12*bf05_56_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*bf05_01_t2 + lamb2*bf05_06_t2 + lamb3*bf05_11_t2 + lamb4*bf05_16_t2 + lamb5*bf05_21_t2 + lamb6*bf05_26_t2 + lamb7*bf05_31_t2 + lamb8*bf05_36_t2 + lamb9*bf05_41_t2 + lamb10*bf05_46_t2 + lamb11*bf05_51_t2 + lamb12*bf05_56_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf05_01_t1 ~~ bf05_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_06_t1 ~~ bf05_06_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_11_t1 ~~ bf05_11_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_16_t1 ~~ bf05_16_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_21_t1 ~~ bf05_21_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_26_t1 ~~ bf05_26_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_31_t1 ~~ bf05_31_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_36_t1 ~~ bf05_36_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_41_t1 ~~ bf05_41_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_46_t1 ~~ bf05_46_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_51_t1 ~~ bf05_51_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_56_t1 ~~ bf05_56_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_01_t1 ~~ res1*bf05_01_t1   # This allows residual variance on indicator X1 at T1 
bf05_06_t1 ~~ res2*bf05_06_t1   # This allows residual variance on indicator X2 at T1
bf05_11_t1 ~~ res3*bf05_11_t1   # This allows residual variance on indicator X3 at T1
bf05_16_t1 ~~ res4*bf05_16_t1   # This allows residual variance on indicator X4 at T1
bf05_21_t1 ~~ res5*bf05_21_t1   # This allows residual variance on indicator X5 at T1
bf05_26_t1 ~~ res6*bf05_26_t1   # This allows residual variance on indicator X6 at T1 
bf05_31_t1 ~~ res7*bf05_31_t1   # This allows residual variance on indicator X7 at T1
bf05_36_t1 ~~ res8*bf05_36_t1   # This allows residual variance on indicator X8 at T1
bf05_41_t1 ~~ res9*bf05_41_t1   # This allows residual variance on indicator X9 at T1
bf05_46_t1 ~~ res10*bf05_46_t1  # This allows residual variance on indicator X10 at T1
bf05_51_t1 ~~ res11*bf05_51_t1  # This allows residual variance on indicator X11 at T1
bf05_56_t1 ~~ res12*bf05_56_t1  # This allows residual variance on indicator X12 at T1

bf05_01_t2 ~~ res1*bf05_01_t2  # This allows residual variance on indicator X1 at T2 
bf05_06_t2 ~~ res2*bf05_06_t2  # This allows residual variance on indicator X2 at T2 
bf05_11_t2 ~~ res3*bf05_11_t2  # This allows residual variance on indicator X3 at T2
bf05_16_t2 ~~ res4*bf05_16_t2  # This allows residual variance on indicator X4 at T2
bf05_21_t2 ~~ res5*bf05_21_t2  # This allows residual variance on indicator X5 at T2
bf05_26_t2 ~~ res6*bf05_26_t2  # This allows residual variance on indicator X6 at T2 
bf05_31_t2 ~~ res7*bf05_31_t2  # This allows residual variance on indicator X7 at T2 
bf05_36_t2 ~~ res8*bf05_36_t2  # This allows residual variance on indicator X8 at T2
bf05_41_t2 ~~ res9*bf05_41_t2  # This allows residual variance on indicator X9 at T2
bf05_46_t2 ~~ res10*bf05_46_t2 # This allows residual variance on indicator X10 at T2
bf05_51_t2 ~~ res11*bf05_51_t2 # This allows residual variance on indicator X11 at T2
bf05_56_t2 ~~ res12*bf05_56_t2 # This allows residual variance on indicator X12 at T2

bf05_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_06_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_11_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_16_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_21_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_26_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_31_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_36_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_41_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_46_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_51_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_56_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_06_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_11_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_16_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_21_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_26_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_31_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_36_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_41_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_46_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_51_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_56_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_extra_curr_hyp4 <- lavaan(mi_lcs_extra_curr_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 22232.68 22436.33 0.852 0.071 0.089
# parameters of interest
params_lcs_extra_curr_hyp4 <- broom::tidy(fit_mi_lcs_extra_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                     "d_extra_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                     "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 0.982 NA NA
d_extra_1 =~ extra_t2 1.000 0.562 NA NA
d_extra_1 ~1 0.637 1.212 4.782 0.000
extra_t1 ~1 2.793 3.041 41.828 0.000
d_extra_1 ~~ d_extra_1 0.258 0.935 5.015 0.000
d_extra_1 ~ extra_t1 -0.146 -0.254 -3.367 0.001
d_extra_1 ~~ sb06_01_t1 0.073 0.142 1.842 0.065
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.324 0.000
sb06_01_t1 ~1 3.076 3.055 53.702 0.000

Correlation of general change goal with extraversion change score (current-self) is not significantly different from zero, r = 0.073, p = 0.065.

3.6.1.2 Extraversion - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_ideal_hyp4 <- '
extra_t1 =~ 1*bf06_01_t1 + lamb2*bf06_06_t1 + lamb3*bf06_11_t1 + lamb4*bf06_16_t1 + lamb5*bf06_21_t1 + lamb6*bf06_26_t1 + lamb7*bf06_31_t1 + lamb8*bf06_36_t1 + lamb9*bf06_41_t1 + lamb10*bf06_46_t1 + lamb11*bf06_51_t1 + lamb12*bf06_56_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*bf06_01_t2 + lamb2*bf06_06_t2 + lamb3*bf06_11_t2 + lamb4*bf06_16_t2 + lamb5*bf06_21_t2 + lamb6*bf06_26_t2 + lamb7*bf06_31_t2 + lamb8*bf06_36_t2 + lamb9*bf06_41_t2 + lamb10*bf06_46_t2 + lamb11*bf06_51_t2 + lamb12*bf06_56_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf06_01_t1 ~~ bf06_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_06_t1 ~~ bf06_06_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_11_t1 ~~ bf06_11_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_16_t1 ~~ bf06_16_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_21_t1 ~~ bf06_21_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_26_t1 ~~ bf06_26_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_31_t1 ~~ bf06_31_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_36_t1 ~~ bf06_36_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_41_t1 ~~ bf06_41_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_46_t1 ~~ bf06_46_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_51_t1 ~~ bf06_51_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_56_t1 ~~ bf06_56_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_01_t1 ~~ res1*bf06_01_t1   # This allows residual variance on indicator X1 at T1 
bf06_06_t1 ~~ res2*bf06_06_t1   # This allows residual variance on indicator X2 at T1
bf06_11_t1 ~~ res3*bf06_11_t1   # This allows residual variance on indicator X3 at T1
bf06_16_t1 ~~ res4*bf06_16_t1   # This allows residual variance on indicator X4 at T1
bf06_21_t1 ~~ res5*bf06_21_t1   # This allows residual variance on indicator X5 at T1
bf06_26_t1 ~~ res6*bf06_26_t1   # This allows residual variance on indicator X6 at T1 
bf06_31_t1 ~~ res7*bf06_31_t1   # This allows residual variance on indicator X7 at T1
bf06_36_t1 ~~ res8*bf06_36_t1   # This allows residual variance on indicator X8 at T1
bf06_41_t1 ~~ res9*bf06_41_t1   # This allows residual variance on indicator X9 at T1
bf06_46_t1 ~~ res10*bf06_46_t1  # This allows residual variance on indicator X10 at T1
bf06_51_t1 ~~ res11*bf06_51_t1  # This allows residual variance on indicator X11 at T1
bf06_56_t1 ~~ res12*bf06_56_t1  # This allows residual variance on indicator X12 at T1

bf06_01_t2 ~~ res1*bf06_01_t2  # This allows residual variance on indicator X1 at T2 
bf06_06_t2 ~~ res2*bf06_06_t2  # This allows residual variance on indicator X2 at T2 
bf06_11_t2 ~~ res3*bf06_11_t2  # This allows residual variance on indicator X3 at T2
bf06_16_t2 ~~ res4*bf06_16_t2  # This allows residual variance on indicator X4 at T2
bf06_21_t2 ~~ res5*bf06_21_t2  # This allows residual variance on indicator X5 at T2
bf06_26_t2 ~~ res6*bf06_26_t2  # This allows residual variance on indicator X6 at T2 
bf06_31_t2 ~~ res7*bf06_31_t2  # This allows residual variance on indicator X7 at T2 
bf06_36_t2 ~~ res8*bf06_36_t2  # This allows residual variance on indicator X8 at T2
bf06_41_t2 ~~ res9*bf06_41_t2  # This allows residual variance on indicator X9 at T2
bf06_46_t2 ~~ res10*bf06_46_t2 # This allows residual variance on indicator X10 at T2
bf06_51_t2 ~~ res11*bf06_51_t2 # This allows residual variance on indicator X11 at T2
bf06_56_t2 ~~ res12*bf06_56_t2 # This allows residual variance on indicator X12 at T2

bf06_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_06_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_11_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_16_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_21_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_26_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_31_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_36_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_41_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_46_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_51_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_56_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_06_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_11_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_16_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_21_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_26_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_31_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_36_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_41_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_46_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_51_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_56_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_extra_ideal_hyp4 <- lavaan(mi_lcs_extra_ideal_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 21329.47 21533.13 0.854 0.053 0.071
# parameters of interest
params_lcs_extra_ideal_hyp4 <- broom::tidy(fit_mi_lcs_extra_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 0.941 NA NA
d_extra_1 =~ extra_t2 1.000 0.636 NA NA
d_extra_1 ~1 0.639 2.361 1.926 0.054
extra_t1 ~1 4.186 10.459 103.492 0.000
d_extra_1 ~~ d_extra_1 0.069 0.942 3.853 0.000
d_extra_1 ~ extra_t1 -0.163 -0.241 -2.107 0.035
d_extra_1 ~~ sb06_01_t1 0.036 0.136 1.590 0.112
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.326 0.000
sb06_01_t1 ~1 3.075 3.054 53.687 0.000

Correlation of general change goal with extraversion change score (ideal-self) is not significantly different from zero, r = 0.036, p = 0.112.

3.6.1.3 Extraversion - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_curr_specif_hyp4 <- '
extra_t1 =~ 1*bf05_01_t1 + lamb2*bf05_06_t1 + lamb3*bf05_11_t1 + lamb4*bf05_16_t1 + lamb5*bf05_21_t1 + lamb6*bf05_26_t1 + lamb7*bf05_31_t1 + lamb8*bf05_36_t1 + lamb9*bf05_41_t1 + lamb10*bf05_46_t1 + lamb11*bf05_51_t1 + lamb12*bf05_56_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*bf05_01_t2 + lamb2*bf05_06_t2 + lamb3*bf05_11_t2 + lamb4*bf05_16_t2 + lamb5*bf05_21_t2 + lamb6*bf05_26_t2 + lamb7*bf05_31_t2 + lamb8*bf05_36_t2 + lamb9*bf05_41_t2 + lamb10*bf05_46_t2 + lamb11*bf05_51_t2 + lamb12*bf05_56_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

goals =~ 1*sb07_01_t1 + sb07_02_t1 + sb07_03_t1 # latent change goal variable (three facets per trait)

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf05_01_t1 ~~ bf05_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_06_t1 ~~ bf05_06_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_11_t1 ~~ bf05_11_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_16_t1 ~~ bf05_16_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_21_t1 ~~ bf05_21_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_26_t1 ~~ bf05_26_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_31_t1 ~~ bf05_31_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_36_t1 ~~ bf05_36_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_41_t1 ~~ bf05_41_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_46_t1 ~~ bf05_46_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_51_t1 ~~ bf05_51_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_56_t1 ~~ bf05_56_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_01_t1 ~~ res1*bf05_01_t1   # This allows residual variance on indicator X1 at T1 
bf05_06_t1 ~~ res2*bf05_06_t1   # This allows residual variance on indicator X2 at T1
bf05_11_t1 ~~ res3*bf05_11_t1   # This allows residual variance on indicator X3 at T1
bf05_16_t1 ~~ res4*bf05_16_t1   # This allows residual variance on indicator X4 at T1
bf05_21_t1 ~~ res5*bf05_21_t1   # This allows residual variance on indicator X5 at T1
bf05_26_t1 ~~ res6*bf05_26_t1   # This allows residual variance on indicator X6 at T1 
bf05_31_t1 ~~ res7*bf05_31_t1   # This allows residual variance on indicator X7 at T1
bf05_36_t1 ~~ res8*bf05_36_t1   # This allows residual variance on indicator X8 at T1
bf05_41_t1 ~~ res9*bf05_41_t1   # This allows residual variance on indicator X9 at T1
bf05_46_t1 ~~ res10*bf05_46_t1  # This allows residual variance on indicator X10 at T1
bf05_51_t1 ~~ res11*bf05_51_t1  # This allows residual variance on indicator X11 at T1
bf05_56_t1 ~~ res12*bf05_56_t1  # This allows residual variance on indicator X12 at T1

bf05_01_t2 ~~ res1*bf05_01_t2  # This allows residual variance on indicator X1 at T2 
bf05_06_t2 ~~ res2*bf05_06_t2  # This allows residual variance on indicator X2 at T2 
bf05_11_t2 ~~ res3*bf05_11_t2  # This allows residual variance on indicator X3 at T2
bf05_16_t2 ~~ res4*bf05_16_t2  # This allows residual variance on indicator X4 at T2
bf05_21_t2 ~~ res5*bf05_21_t2  # This allows residual variance on indicator X5 at T2
bf05_26_t2 ~~ res6*bf05_26_t2  # This allows residual variance on indicator X6 at T2 
bf05_31_t2 ~~ res7*bf05_31_t2  # This allows residual variance on indicator X7 at T2 
bf05_36_t2 ~~ res8*bf05_36_t2  # This allows residual variance on indicator X8 at T2
bf05_41_t2 ~~ res9*bf05_41_t2  # This allows residual variance on indicator X9 at T2
bf05_46_t2 ~~ res10*bf05_46_t2 # This allows residual variance on indicator X10 at T2
bf05_51_t2 ~~ res11*bf05_51_t2 # This allows residual variance on indicator X11 at T2
bf05_56_t2 ~~ res12*bf05_56_t2 # This allows residual variance on indicator X12 at T2

bf05_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_06_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_11_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_16_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_21_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_26_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_31_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_36_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_41_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_46_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_51_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_56_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_06_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_11_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_16_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_21_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_26_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_31_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_36_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_41_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_46_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_51_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_56_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_01_t1 ~~ sb07_01_t1
sb07_02_t1 ~~ sb07_02_t1
sb07_03_t1 ~~ sb07_03_t1

sb07_01_t1 ~ 1
sb07_02_t1 ~ 1
sb07_03_t1 ~ 1
'
fit_mi_lcs_extra_curr_specif_hyp4 <- lavaan(mi_lcs_extra_curr_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 24306.56 24536.61 0.822 0.075 0.107
# parameters of interest
params_lcs_extra_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_extra_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "goals ~~ d_extra_1", "goals ~~ goals", # change goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 0.991 NA NA
d_extra_1 =~ extra_t2 1.000 0.571 NA NA
d_extra_1 ~1 0.668 1.267 4.919 0.000
extra_t1 ~1 2.794 3.050 41.882 0.000
d_extra_1 ~~ d_extra_1 0.257 0.926 5.056 0.000
d_extra_1 ~ extra_t1 -0.157 -0.273 -3.516 0.000
goals ~~ d_extra_1 0.012 0.041 0.367 0.713
goals ~~ goals 0.333 1.000 2.727 0.006

Correlation of specific, facet-level change goals with extraversion change score (current-self) is not significantly different from zero, r = 0.012, p = 0.713.

3.6.1.4 Extraversion - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_ideal_specif_hyp4 <- '
extra_t1 =~ 1*bf06_01_t1 + lamb2*bf06_06_t1 + lamb3*bf06_11_t1 + lamb4*bf06_16_t1 + lamb5*bf06_21_t1 + lamb6*bf06_26_t1 + lamb7*bf06_31_t1 + lamb8*bf06_36_t1 + lamb9*bf06_41_t1 + lamb10*bf06_46_t1 + lamb11*bf06_51_t1 + lamb12*bf06_56_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*bf06_01_t2 + lamb2*bf06_06_t2 + lamb3*bf06_11_t2 + lamb4*bf06_16_t2 + lamb5*bf06_21_t2 + lamb6*bf06_26_t2 + lamb7*bf06_31_t2 + lamb8*bf06_36_t2 + lamb9*bf06_41_t2 + lamb10*bf06_46_t2 + lamb11*bf06_51_t2 + lamb12*bf06_56_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

goals =~ 1*sb07_01_t1 + sb07_02_t1 + sb07_03_t1 # latent change goal variable (three facets per trait)

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf06_01_t1 ~~ bf06_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_06_t1 ~~ bf06_06_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_11_t1 ~~ bf06_11_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_16_t1 ~~ bf06_16_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_21_t1 ~~ bf06_21_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_26_t1 ~~ bf06_26_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_31_t1 ~~ bf06_31_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_36_t1 ~~ bf06_36_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_41_t1 ~~ bf06_41_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_46_t1 ~~ bf06_46_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_51_t1 ~~ bf06_51_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_56_t1 ~~ bf06_56_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_01_t1 ~~ res1*bf06_01_t1   # This allows residual variance on indicator X1 at T1 
bf06_06_t1 ~~ res2*bf06_06_t1   # This allows residual variance on indicator X2 at T1
bf06_11_t1 ~~ res3*bf06_11_t1   # This allows residual variance on indicator X3 at T1
bf06_16_t1 ~~ res4*bf06_16_t1   # This allows residual variance on indicator X4 at T1
bf06_21_t1 ~~ res5*bf06_21_t1   # This allows residual variance on indicator X5 at T1
bf06_26_t1 ~~ res6*bf06_26_t1   # This allows residual variance on indicator X6 at T1 
bf06_31_t1 ~~ res7*bf06_31_t1   # This allows residual variance on indicator X7 at T1
bf06_36_t1 ~~ res8*bf06_36_t1   # This allows residual variance on indicator X8 at T1
bf06_41_t1 ~~ res9*bf06_41_t1   # This allows residual variance on indicator X9 at T1
bf06_46_t1 ~~ res10*bf06_46_t1  # This allows residual variance on indicator X10 at T1
bf06_51_t1 ~~ res11*bf06_51_t1  # This allows residual variance on indicator X11 at T1
bf06_56_t1 ~~ res12*bf06_56_t1  # This allows residual variance on indicator X12 at T1

bf06_01_t2 ~~ res1*bf06_01_t2  # This allows residual variance on indicator X1 at T2 
bf06_06_t2 ~~ res2*bf06_06_t2  # This allows residual variance on indicator X2 at T2 
bf06_11_t2 ~~ res3*bf06_11_t2  # This allows residual variance on indicator X3 at T2
bf06_16_t2 ~~ res4*bf06_16_t2  # This allows residual variance on indicator X4 at T2
bf06_21_t2 ~~ res5*bf06_21_t2  # This allows residual variance on indicator X5 at T2
bf06_26_t2 ~~ res6*bf06_26_t2  # This allows residual variance on indicator X6 at T2 
bf06_31_t2 ~~ res7*bf06_31_t2  # This allows residual variance on indicator X7 at T2 
bf06_36_t2 ~~ res8*bf06_36_t2  # This allows residual variance on indicator X8 at T2
bf06_41_t2 ~~ res9*bf06_41_t2  # This allows residual variance on indicator X9 at T2
bf06_46_t2 ~~ res10*bf06_46_t2 # This allows residual variance on indicator X10 at T2
bf06_51_t2 ~~ res11*bf06_51_t2 # This allows residual variance on indicator X11 at T2
bf06_56_t2 ~~ res12*bf06_56_t2 # This allows residual variance on indicator X12 at T2

bf06_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_06_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_11_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_16_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_21_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_26_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_31_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_36_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_41_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_46_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_51_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_56_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_06_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_11_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_16_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_21_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_26_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_31_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_36_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_41_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_46_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_51_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_56_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_01_t1 ~~ sb07_01_t1
sb07_02_t1 ~~ sb07_02_t1
sb07_03_t1 ~~ sb07_03_t1

sb07_01_t1 ~ 1
sb07_02_t1 ~ 1
sb07_03_t1 ~ 1
'
fit_mi_lcs_extra_ideal_specif_hyp4 <- lavaan(mi_lcs_extra_ideal_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 23402.2 23632.26 0.837 0.053 0.077
# parameters of interest
params_lcs_extra_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_extra_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "goals ~~ d_extra_1", "goals ~~ goals", # change goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 0.939 NA NA
d_extra_1 =~ extra_t2 1.000 0.633 NA NA
d_extra_1 ~1 0.626 2.325 1.802 0.071
extra_t1 ~1 4.186 10.482 103.487 0.000
d_extra_1 ~~ d_extra_1 0.069 0.944 3.824 0.000
d_extra_1 ~ extra_t1 -0.160 -0.237 -1.970 0.049
goals ~~ d_extra_1 0.012 0.077 0.518 0.604
goals ~~ goals 0.346 1.000 2.556 0.011

Correlation of specific, facet-level change goals with extraversion change score (ideal-self) is not significantly different from zero, r = 0.012, p = 0.604.

3.6.1.5 Agreeableness - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_curr_hyp4 <- '
agree_t1 =~ 1*bf05_02_t1 + lamb2*bf05_07_t1 + lamb3*bf05_12_t1 + lamb4*bf05_17_t1 + lamb5*bf05_22_t1 + lamb6*bf05_27_t1 + lamb7*bf05_32_t1 + lamb8*bf05_37_t1 + lamb9*bf05_42_t1 + lamb10*bf05_47_t1 + lamb11*bf05_52_t1 + lamb12*bf05_57_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*bf05_02_t2 + lamb2*bf05_07_t2 + lamb3*bf05_12_t2 + lamb4*bf05_17_t2 + lamb5*bf05_22_t2 + lamb6*bf05_27_t2 + lamb7*bf05_32_t2 + lamb8*bf05_37_t2 + lamb9*bf05_42_t2 + lamb10*bf05_47_t2 + lamb11*bf05_52_t2 + lamb12*bf05_57_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf05_02_t1 ~~ bf05_02_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_07_t1 ~~ bf05_07_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_12_t1 ~~ bf05_12_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_17_t1 ~~ bf05_17_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_22_t1 ~~ bf05_22_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_27_t1 ~~ bf05_27_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_32_t1 ~~ bf05_32_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_37_t1 ~~ bf05_37_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_42_t1 ~~ bf05_42_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_47_t1 ~~ bf05_47_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_52_t1 ~~ bf05_52_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_57_t1 ~~ bf05_57_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_02_t1 ~~ res1*bf05_02_t1   # This allows residual variance on indicator X1 at T1 
bf05_07_t1 ~~ res2*bf05_07_t1   # This allows residual variance on indicator X2 at T1
bf05_12_t1 ~~ res3*bf05_12_t1   # This allows residual variance on indicator X3 at T1
bf05_17_t1 ~~ res4*bf05_17_t1   # This allows residual variance on indicator X4 at T1
bf05_22_t1 ~~ res5*bf05_22_t1   # This allows residual variance on indicator X5 at T1
bf05_27_t1 ~~ res6*bf05_27_t1   # This allows residual variance on indicator X6 at T1 
bf05_32_t1 ~~ res7*bf05_32_t1   # This allows residual variance on indicator X7 at T1
bf05_37_t1 ~~ res8*bf05_37_t1   # This allows residual variance on indicator X8 at T1
bf05_42_t1 ~~ res9*bf05_42_t1   # This allows residual variance on indicator X9 at T1
bf05_47_t1 ~~ res10*bf05_47_t1  # This allows residual variance on indicator X10 at T1
bf05_52_t1 ~~ res11*bf05_52_t1  # This allows residual variance on indicator X11 at T1
bf05_57_t1 ~~ res12*bf05_57_t1  # This allows residual variance on indicator X12 at T1

bf05_02_t2 ~~ res1*bf05_02_t2  # This allows residual variance on indicator X1 at T2 
bf05_07_t2 ~~ res2*bf05_07_t2  # This allows residual variance on indicator X2 at T2 
bf05_12_t2 ~~ res3*bf05_12_t2  # This allows residual variance on indicator X3 at T2
bf05_17_t2 ~~ res4*bf05_17_t2  # This allows residual variance on indicator X4 at T2
bf05_22_t2 ~~ res5*bf05_22_t2  # This allows residual variance on indicator X5 at T2
bf05_27_t2 ~~ res6*bf05_27_t2  # This allows residual variance on indicator X6 at T2 
bf05_32_t2 ~~ res7*bf05_32_t2  # This allows residual variance on indicator X7 at T2 
bf05_37_t2 ~~ res8*bf05_37_t2  # This allows residual variance on indicator X8 at T2
bf05_42_t2 ~~ res9*bf05_42_t2  # This allows residual variance on indicator X9 at T2
bf05_47_t2 ~~ res10*bf05_47_t2 # This allows residual variance on indicator X10 at T2
bf05_52_t2 ~~ res11*bf05_52_t2 # This allows residual variance on indicator X11 at T2
bf05_57_t2 ~~ res12*bf05_57_t2 # This allows residual variance on indicator X12 at T2

bf05_02_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_07_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_12_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_17_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_22_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_27_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_32_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_37_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_42_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_47_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_52_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_57_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_02_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_07_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_12_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_17_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_22_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_27_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_32_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_37_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_42_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_47_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_52_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_57_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_agree_curr_hyp4 <- lavaan(mi_lcs_agree_curr_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 21175.65 21379.31 0.854 0.065 0.07
# parameters of interest
params_lcs_agree_curr_hyp4 <- broom::tidy(fit_mi_lcs_agree_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                     "d_agree_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                     "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.040 NA NA
d_agree_1 =~ agree_t2 1.000 0.582 NA NA
d_agree_1 ~1 0.901 3.159 4.899 0.000
agree_t1 ~1 4.175 8.190 89.283 0.000
d_agree_1 ~~ d_agree_1 0.072 0.880 4.148 0.000
d_agree_1 ~ agree_t1 -0.194 -0.347 -4.589 0.000
d_agree_1 ~~ sb06_01_t1 -0.007 -0.025 -0.329 0.742
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.665 0.000

Correlation of general change goal with agreeableness change score (current-self) is not significantly different from zero, r = -0.007, p = 0.742.

3.6.1.6 Agreeableness - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_ideal_hyp4 <- '
agree_t1 =~ 1*bf06_02_t1 + lamb2*bf06_07_t1 + lamb3*bf06_12_t1 + lamb4*bf06_17_t1 + lamb5*bf06_22_t1 + lamb6*bf06_27_t1 + lamb7*bf06_32_t1 + lamb8*bf06_37_t1 + lamb9*bf06_42_t1 + lamb10*bf06_47_t1 + lamb11*bf06_52_t1 + lamb12*bf06_57_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*bf06_02_t2 + lamb2*bf06_07_t2 + lamb3*bf06_12_t2 + lamb4*bf06_17_t2 + lamb5*bf06_22_t2 + lamb6*bf06_27_t2 + lamb7*bf06_32_t2 + lamb8*bf06_37_t2 + lamb9*bf06_42_t2 + lamb10*bf06_47_t2 + lamb11*bf06_52_t2 + lamb12*bf06_57_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf06_02_t1 ~~ bf06_02_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_07_t1 ~~ bf06_07_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_12_t1 ~~ bf06_12_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_17_t1 ~~ bf06_17_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_22_t1 ~~ bf06_22_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_27_t1 ~~ bf06_27_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_32_t1 ~~ bf06_32_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_37_t1 ~~ bf06_37_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_42_t1 ~~ bf06_42_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_47_t1 ~~ bf06_47_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_52_t1 ~~ bf06_52_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_57_t1 ~~ bf06_57_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_02_t1 ~~ res1*bf06_02_t1   # This allows residual variance on indicator X1 at T1 
bf06_07_t1 ~~ res2*bf06_07_t1   # This allows residual variance on indicator X2 at T1
bf06_12_t1 ~~ res3*bf06_12_t1   # This allows residual variance on indicator X3 at T1
bf06_17_t1 ~~ res4*bf06_17_t1   # This allows residual variance on indicator X4 at T1
bf06_22_t1 ~~ res5*bf06_22_t1   # This allows residual variance on indicator X5 at T1
bf06_27_t1 ~~ res6*bf06_27_t1   # This allows residual variance on indicator X6 at T1 
bf06_32_t1 ~~ res7*bf06_32_t1   # This allows residual variance on indicator X7 at T1
bf06_37_t1 ~~ res8*bf06_37_t1   # This allows residual variance on indicator X8 at T1
bf06_42_t1 ~~ res9*bf06_42_t1   # This allows residual variance on indicator X9 at T1
bf06_47_t1 ~~ res10*bf06_47_t1  # This allows residual variance on indicator X10 at T1
bf06_52_t1 ~~ res11*bf06_52_t1  # This allows residual variance on indicator X11 at T1
bf06_57_t1 ~~ res12*bf06_57_t1  # This allows residual variance on indicator X12 at T1

bf06_02_t2 ~~ res1*bf06_02_t2  # This allows residual variance on indicator X1 at T2 
bf06_07_t2 ~~ res2*bf06_07_t2  # This allows residual variance on indicator X2 at T2 
bf06_12_t2 ~~ res3*bf06_12_t2  # This allows residual variance on indicator X3 at T2
bf06_17_t2 ~~ res4*bf06_17_t2  # This allows residual variance on indicator X4 at T2
bf06_22_t2 ~~ res5*bf06_22_t2  # This allows residual variance on indicator X5 at T2
bf06_27_t2 ~~ res6*bf06_27_t2  # This allows residual variance on indicator X6 at T2 
bf06_32_t2 ~~ res7*bf06_32_t2  # This allows residual variance on indicator X7 at T2 
bf06_37_t2 ~~ res8*bf06_37_t2  # This allows residual variance on indicator X8 at T2
bf06_42_t2 ~~ res9*bf06_42_t2  # This allows residual variance on indicator X9 at T2
bf06_47_t2 ~~ res10*bf06_47_t2 # This allows residual variance on indicator X10 at T2
bf06_52_t2 ~~ res11*bf06_52_t2 # This allows residual variance on indicator X11 at T2
bf06_57_t2 ~~ res12*bf06_57_t2 # This allows residual variance on indicator X12 at T2

bf06_02_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_07_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_12_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_17_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_22_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_27_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_32_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_37_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_42_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_47_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_52_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_57_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_02_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_07_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_12_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_17_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_22_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_27_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_32_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_37_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_42_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_47_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_52_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_57_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_agree_ideal_hyp4 <- lavaan(mi_lcs_agree_ideal_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 20333.84 20537.5 0.906 0.047 0.062
# parameters of interest
params_lcs_agree_ideal_hyp4 <- broom::tidy(fit_mi_lcs_agree_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.033 NA NA
d_agree_1 =~ agree_t2 1.000 0.618 NA NA
d_agree_1 ~1 0.911 2.751 2.997 0.003
agree_t1 ~1 4.179 7.548 86.723 0.000
d_agree_1 ~~ d_agree_1 0.096 0.876 4.007 0.000
d_agree_1 ~ agree_t1 -0.211 -0.352 -3.020 0.003
d_agree_1 ~~ sb06_01_t1 -0.004 -0.013 -0.145 0.885
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.664 0.000

Correlation of general change goal with agreeableness change score (ideal-self) is not significantly different from zero, r = -0.004, p = 0.885.

3.6.1.7 Agreeableness - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_curr_specif_hyp4 <- '
agree_t1 =~ 1*bf05_02_t1 + lamb2*bf05_07_t1 + lamb3*bf05_12_t1 + lamb4*bf05_17_t1 + lamb5*bf05_22_t1 + lamb6*bf05_27_t1 + lamb7*bf05_32_t1 + lamb8*bf05_37_t1 + lamb9*bf05_42_t1 + lamb10*bf05_47_t1 + lamb11*bf05_52_t1 + lamb12*bf05_57_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*bf05_02_t2 + lamb2*bf05_07_t2 + lamb3*bf05_12_t2 + lamb4*bf05_17_t2 + lamb5*bf05_22_t2 + lamb6*bf05_27_t2 + lamb7*bf05_32_t2 + lamb8*bf05_37_t2 + lamb9*bf05_42_t2 + lamb10*bf05_47_t2 + lamb11*bf05_52_t2 + lamb12*bf05_57_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

goals =~ 1*sb07_04_t1 + sb07_05_t1 + sb07_06_t1 # latent change goal variable (three facets per trait)

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf05_02_t1 ~~ bf05_02_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_07_t1 ~~ bf05_07_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_12_t1 ~~ bf05_12_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_17_t1 ~~ bf05_17_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_22_t1 ~~ bf05_22_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_27_t1 ~~ bf05_27_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_32_t1 ~~ bf05_32_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_37_t1 ~~ bf05_37_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_42_t1 ~~ bf05_42_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_47_t1 ~~ bf05_47_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_52_t1 ~~ bf05_52_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_57_t1 ~~ bf05_57_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_02_t1 ~~ res1*bf05_02_t1   # This allows residual variance on indicator X1 at T1 
bf05_07_t1 ~~ res2*bf05_07_t1   # This allows residual variance on indicator X2 at T1
bf05_12_t1 ~~ res3*bf05_12_t1   # This allows residual variance on indicator X3 at T1
bf05_17_t1 ~~ res4*bf05_17_t1   # This allows residual variance on indicator X4 at T1
bf05_22_t1 ~~ res5*bf05_22_t1   # This allows residual variance on indicator X5 at T1
bf05_27_t1 ~~ res6*bf05_27_t1   # This allows residual variance on indicator X6 at T1 
bf05_32_t1 ~~ res7*bf05_32_t1   # This allows residual variance on indicator X7 at T1
bf05_37_t1 ~~ res8*bf05_37_t1   # This allows residual variance on indicator X8 at T1
bf05_42_t1 ~~ res9*bf05_42_t1   # This allows residual variance on indicator X9 at T1
bf05_47_t1 ~~ res10*bf05_47_t1  # This allows residual variance on indicator X10 at T1
bf05_52_t1 ~~ res11*bf05_52_t1  # This allows residual variance on indicator X11 at T1
bf05_57_t1 ~~ res12*bf05_57_t1  # This allows residual variance on indicator X12 at T1

bf05_02_t2 ~~ res1*bf05_02_t2  # This allows residual variance on indicator X1 at T2 
bf05_07_t2 ~~ res2*bf05_07_t2  # This allows residual variance on indicator X2 at T2 
bf05_12_t2 ~~ res3*bf05_12_t2  # This allows residual variance on indicator X3 at T2
bf05_17_t2 ~~ res4*bf05_17_t2  # This allows residual variance on indicator X4 at T2
bf05_22_t2 ~~ res5*bf05_22_t2  # This allows residual variance on indicator X5 at T2
bf05_27_t2 ~~ res6*bf05_27_t2  # This allows residual variance on indicator X6 at T2 
bf05_32_t2 ~~ res7*bf05_32_t2  # This allows residual variance on indicator X7 at T2 
bf05_37_t2 ~~ res8*bf05_37_t2  # This allows residual variance on indicator X8 at T2
bf05_42_t2 ~~ res9*bf05_42_t2  # This allows residual variance on indicator X9 at T2
bf05_47_t2 ~~ res10*bf05_47_t2 # This allows residual variance on indicator X10 at T2
bf05_52_t2 ~~ res11*bf05_52_t2 # This allows residual variance on indicator X11 at T2
bf05_57_t2 ~~ res12*bf05_57_t2 # This allows residual variance on indicator X12 at T2

bf05_02_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_07_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_12_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_17_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_22_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_27_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_32_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_37_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_42_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_47_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_52_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_57_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_02_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_07_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_12_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_17_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_22_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_27_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_32_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_37_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_42_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_47_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_52_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_57_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_04_t1 ~~ sb07_04_t1
sb07_05_t1 ~~ sb07_05_t1
sb07_06_t1 ~~ sb07_06_t1

sb07_04_t1 ~ 1
sb07_05_t1 ~ 1
sb07_06_t1 ~ 1
'
fit_mi_lcs_agree_curr_specif_hyp4 <- lavaan(mi_lcs_agree_curr_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 23343.02 23573.08 0.839 0.066 0.083
# parameters of interest
params_lcs_agree_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_agree_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "goals ~~ d_agree_1", "goals ~~ goals", # change goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.032 NA NA
d_agree_1 =~ agree_t2 1.000 0.573 NA NA
d_agree_1 ~1 0.860 3.035 4.953 0.000
agree_t1 ~1 4.175 8.177 89.267 0.000
d_agree_1 ~~ d_agree_1 0.071 0.890 4.168 0.000
d_agree_1 ~ agree_t1 -0.184 -0.332 -4.579 0.000
goals ~~ d_agree_1 0.018 0.070 0.704 0.481
goals ~~ goals 0.923 1.000 5.558 0.000

Correlation of specific, facet-level change goals with agreeableness change score (current-self) is not significantly different from zero, r = 0.018, p = 0.481.

3.6.1.8 Agreeableness - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_ideal_specif_hyp4 <- '
agree_t1 =~ 1*bf06_02_t1 + lamb2*bf06_07_t1 + lamb3*bf06_12_t1 + lamb4*bf06_17_t1 + lamb5*bf06_22_t1 + lamb6*bf06_27_t1 + lamb7*bf06_32_t1 + lamb8*bf06_37_t1 + lamb9*bf06_42_t1 + lamb10*bf06_47_t1 + lamb11*bf06_52_t1 + lamb12*bf06_57_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*bf06_02_t2 + lamb2*bf06_07_t2 + lamb3*bf06_12_t2 + lamb4*bf06_17_t2 + lamb5*bf06_22_t2 + lamb6*bf06_27_t2 + lamb7*bf06_32_t2 + lamb8*bf06_37_t2 + lamb9*bf06_42_t2 + lamb10*bf06_47_t2 + lamb11*bf06_52_t2 + lamb12*bf06_57_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

goals =~ 1*sb07_04_t1 + sb07_05_t1 + sb07_06_t1 # latent change goal variable (three facets per trait)

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf06_02_t1 ~~ bf06_02_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_07_t1 ~~ bf06_07_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_12_t1 ~~ bf06_12_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_17_t1 ~~ bf06_17_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_22_t1 ~~ bf06_22_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_27_t1 ~~ bf06_27_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_32_t1 ~~ bf06_32_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_37_t1 ~~ bf06_37_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_42_t1 ~~ bf06_42_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_47_t1 ~~ bf06_47_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_52_t1 ~~ bf06_52_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_57_t1 ~~ bf06_57_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_02_t1 ~~ res1*bf06_02_t1   # This allows residual variance on indicator X1 at T1 
bf06_07_t1 ~~ res2*bf06_07_t1   # This allows residual variance on indicator X2 at T1
bf06_12_t1 ~~ res3*bf06_12_t1   # This allows residual variance on indicator X3 at T1
bf06_17_t1 ~~ res4*bf06_17_t1   # This allows residual variance on indicator X4 at T1
bf06_22_t1 ~~ res5*bf06_22_t1   # This allows residual variance on indicator X5 at T1
bf06_27_t1 ~~ res6*bf06_27_t1   # This allows residual variance on indicator X6 at T1 
bf06_32_t1 ~~ res7*bf06_32_t1   # This allows residual variance on indicator X7 at T1
bf06_37_t1 ~~ res8*bf06_37_t1   # This allows residual variance on indicator X8 at T1
bf06_42_t1 ~~ res9*bf06_42_t1   # This allows residual variance on indicator X9 at T1
bf06_47_t1 ~~ res10*bf06_47_t1  # This allows residual variance on indicator X10 at T1
bf06_52_t1 ~~ res11*bf06_52_t1  # This allows residual variance on indicator X11 at T1
bf06_57_t1 ~~ res12*bf06_57_t1  # This allows residual variance on indicator X12 at T1

bf06_02_t2 ~~ res1*bf06_02_t2  # This allows residual variance on indicator X1 at T2 
bf06_07_t2 ~~ res2*bf06_07_t2  # This allows residual variance on indicator X2 at T2 
bf06_12_t2 ~~ res3*bf06_12_t2  # This allows residual variance on indicator X3 at T2
bf06_17_t2 ~~ res4*bf06_17_t2  # This allows residual variance on indicator X4 at T2
bf06_22_t2 ~~ res5*bf06_22_t2  # This allows residual variance on indicator X5 at T2
bf06_27_t2 ~~ res6*bf06_27_t2  # This allows residual variance on indicator X6 at T2 
bf06_32_t2 ~~ res7*bf06_32_t2  # This allows residual variance on indicator X7 at T2 
bf06_37_t2 ~~ res8*bf06_37_t2  # This allows residual variance on indicator X8 at T2
bf06_42_t2 ~~ res9*bf06_42_t2  # This allows residual variance on indicator X9 at T2
bf06_47_t2 ~~ res10*bf06_47_t2 # This allows residual variance on indicator X10 at T2
bf06_52_t2 ~~ res11*bf06_52_t2 # This allows residual variance on indicator X11 at T2
bf06_57_t2 ~~ res12*bf06_57_t2 # This allows residual variance on indicator X12 at T2

bf06_02_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_07_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_12_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_17_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_22_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_27_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_32_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_37_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_42_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_47_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_52_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_57_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_02_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_07_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_12_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_17_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_22_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_27_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_32_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_37_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_42_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_47_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_52_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_57_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_04_t1 ~~ sb07_04_t1
sb07_05_t1 ~~ sb07_05_t1
sb07_06_t1 ~~ sb07_06_t1

sb07_04_t1 ~ 1
sb07_05_t1 ~ 1
sb07_06_t1 ~ 1
'
fit_mi_lcs_agree_ideal_specif_hyp4 <- lavaan(mi_lcs_agree_ideal_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 22499.3 22729.36 0.899 0.047 0.062
# parameters of interest
params_lcs_agree_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_agree_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "goals ~~ d_agree_1", "goals ~~ goals", # change goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.037 NA NA
d_agree_1 =~ agree_t2 1.000 0.622 NA NA
d_agree_1 ~1 0.929 2.798 3.119 0.002
agree_t1 ~1 4.179 7.553 86.730 0.000
d_agree_1 ~~ d_agree_1 0.096 0.872 4.017 0.000
d_agree_1 ~ agree_t1 -0.215 -0.358 -3.144 0.002
goals ~~ d_agree_1 -0.040 -0.135 -1.368 0.171
goals ~~ goals 0.923 1.000 5.337 0.000

Correlation of specific, facet-level change goals with agreeableness change score (ideal-self) is not significantly different from zero, r = -0.04, p = 0.171.

3.6.1.9 Conscientiousness - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_curr_hyp4 <- '
consc_t1 =~ 1*bf05_03_t1 + lamb2*bf05_08_t1 + lamb3*bf05_13_t1 + lamb4*bf05_18_t1 + lamb5*bf05_23_t1 + lamb6*bf05_28_t1 + lamb7*bf05_33_t1 + lamb8*bf05_38_t1 + lamb9*bf05_43_t1 + lamb10*bf05_48_t1 + lamb11*bf05_53_t1 + lamb12*bf05_58_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*bf05_03_t2 + lamb2*bf05_08_t2 + lamb3*bf05_13_t2 + lamb4*bf05_18_t2 + lamb5*bf05_23_t2 + lamb6*bf05_28_t2 + lamb7*bf05_33_t2 + lamb8*bf05_38_t2 + lamb9*bf05_43_t2 + lamb10*bf05_48_t2 + lamb11*bf05_53_t2 + lamb12*bf05_58_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf05_03_t1 ~~ bf05_03_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_08_t1 ~~ bf05_08_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_13_t1 ~~ bf05_13_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_18_t1 ~~ bf05_18_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_23_t1 ~~ bf05_23_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_28_t1 ~~ bf05_28_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_33_t1 ~~ bf05_33_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_38_t1 ~~ bf05_38_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_43_t1 ~~ bf05_43_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_48_t1 ~~ bf05_48_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_53_t1 ~~ bf05_53_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_58_t1 ~~ bf05_58_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_03_t1 ~~ res1*bf05_03_t1   # This allows residual variance on indicator X1 at T1 
bf05_08_t1 ~~ res2*bf05_08_t1   # This allows residual variance on indicator X2 at T1
bf05_13_t1 ~~ res3*bf05_13_t1   # This allows residual variance on indicator X3 at T1
bf05_18_t1 ~~ res4*bf05_18_t1   # This allows residual variance on indicator X4 at T1
bf05_23_t1 ~~ res5*bf05_23_t1   # This allows residual variance on indicator X5 at T1
bf05_28_t1 ~~ res6*bf05_28_t1   # This allows residual variance on indicator X6 at T1 
bf05_33_t1 ~~ res7*bf05_33_t1   # This allows residual variance on indicator X7 at T1
bf05_38_t1 ~~ res8*bf05_38_t1   # This allows residual variance on indicator X8 at T1
bf05_43_t1 ~~ res9*bf05_43_t1   # This allows residual variance on indicator X9 at T1
bf05_48_t1 ~~ res10*bf05_48_t1  # This allows residual variance on indicator X10 at T1
bf05_53_t1 ~~ res11*bf05_53_t1  # This allows residual variance on indicator X11 at T1
bf05_58_t1 ~~ res12*bf05_58_t1  # This allows residual variance on indicator X12 at T1

bf05_03_t2 ~~ res1*bf05_03_t2  # This allows residual variance on indicator X1 at T2 
bf05_08_t2 ~~ res2*bf05_08_t2  # This allows residual variance on indicator X2 at T2 
bf05_13_t2 ~~ res3*bf05_13_t2  # This allows residual variance on indicator X3 at T2
bf05_18_t2 ~~ res4*bf05_18_t2  # This allows residual variance on indicator X4 at T2
bf05_23_t2 ~~ res5*bf05_23_t2  # This allows residual variance on indicator X5 at T2
bf05_28_t2 ~~ res6*bf05_28_t2  # This allows residual variance on indicator X6 at T2 
bf05_33_t2 ~~ res7*bf05_33_t2  # This allows residual variance on indicator X7 at T2 
bf05_38_t2 ~~ res8*bf05_38_t2  # This allows residual variance on indicator X8 at T2
bf05_43_t2 ~~ res9*bf05_43_t2  # This allows residual variance on indicator X9 at T2
bf05_48_t2 ~~ res10*bf05_48_t2 # This allows residual variance on indicator X10 at T2
bf05_53_t2 ~~ res11*bf05_53_t2 # This allows residual variance on indicator X11 at T2
bf05_58_t2 ~~ res12*bf05_58_t2 # This allows residual variance on indicator X12 at T2

bf05_03_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_08_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_13_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_18_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_23_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_28_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_33_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_38_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_43_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_48_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_53_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_58_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_03_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_08_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_13_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_18_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_23_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_28_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_33_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_38_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_43_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_48_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_53_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_58_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_consc_curr_hyp4 <- lavaan(mi_lcs_consc_curr_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 21271.55 21475.21 0.865 0.075 0.079
# parameters of interest
params_lcs_consc_curr_hyp4 <- broom::tidy(fit_mi_lcs_consc_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                     "d_consc_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                     "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.037 NA NA
d_consc_1 =~ consc_t2 1.000 0.464 NA NA
d_consc_1 ~1 0.190 0.400 2.133 0.033
consc_t1 ~1 2.837 2.678 38.157 0.000
d_consc_1 ~~ d_consc_1 0.204 0.909 5.593 0.000
d_consc_1 ~ consc_t1 -0.135 -0.302 -4.072 0.000
d_consc_1 ~~ sb06_01_t1 -0.022 -0.049 -0.664 0.506
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.673 0.000

Correlation of general change goal with conscientiousness change score (current-self) is not significantly different from zero, r = -0.022, p = 0.506.

3.6.1.10 Conscientiousness - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_ideal_hyp4 <- '
consc_t1 =~ 1*bf06_03_t1 + lamb2*bf06_08_t1 + lamb3*bf06_13_t1 + lamb4*bf06_18_t1 + lamb5*bf06_23_t1 + lamb6*bf06_28_t1 + lamb7*bf06_33_t1 + lamb8*bf06_38_t1 + lamb9*bf06_43_t1 + lamb10*bf06_48_t1 + lamb11*bf06_53_t1 + lamb12*bf06_58_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*bf06_03_t2 + lamb2*bf06_08_t2 + lamb3*bf06_13_t2 + lamb4*bf06_18_t2 + lamb5*bf06_23_t2 + lamb6*bf06_28_t2 + lamb7*bf06_33_t2 + lamb8*bf06_38_t2 + lamb9*bf06_43_t2 + lamb10*bf06_48_t2 + lamb11*bf06_53_t2 + lamb12*bf06_58_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf06_03_t1 ~~ bf06_03_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_08_t1 ~~ bf06_08_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_13_t1 ~~ bf06_13_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_18_t1 ~~ bf06_18_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_23_t1 ~~ bf06_23_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_28_t1 ~~ bf06_28_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_33_t1 ~~ bf06_33_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_38_t1 ~~ bf06_38_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_43_t1 ~~ bf06_43_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_48_t1 ~~ bf06_48_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_53_t1 ~~ bf06_53_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_58_t1 ~~ bf06_58_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_03_t1 ~~ res1*bf06_03_t1   # This allows residual variance on indicator X1 at T1 
bf06_08_t1 ~~ res2*bf06_08_t1   # This allows residual variance on indicator X2 at T1
bf06_13_t1 ~~ res3*bf06_13_t1   # This allows residual variance on indicator X3 at T1
bf06_18_t1 ~~ res4*bf06_18_t1   # This allows residual variance on indicator X4 at T1
bf06_23_t1 ~~ res5*bf06_23_t1   # This allows residual variance on indicator X5 at T1
bf06_28_t1 ~~ res6*bf06_28_t1   # This allows residual variance on indicator X6 at T1 
bf06_33_t1 ~~ res7*bf06_33_t1   # This allows residual variance on indicator X7 at T1
bf06_38_t1 ~~ res8*bf06_38_t1   # This allows residual variance on indicator X8 at T1
bf06_43_t1 ~~ res9*bf06_43_t1   # This allows residual variance on indicator X9 at T1
bf06_48_t1 ~~ res10*bf06_48_t1  # This allows residual variance on indicator X10 at T1
bf06_53_t1 ~~ res11*bf06_53_t1  # This allows residual variance on indicator X11 at T1
bf06_58_t1 ~~ res12*bf06_58_t1  # This allows residual variance on indicator X12 at T1

bf06_03_t2 ~~ res1*bf06_03_t2  # This allows residual variance on indicator X1 at T2 
bf06_08_t2 ~~ res2*bf06_08_t2  # This allows residual variance on indicator X2 at T2 
bf06_13_t2 ~~ res3*bf06_13_t2  # This allows residual variance on indicator X3 at T2
bf06_18_t2 ~~ res4*bf06_18_t2  # This allows residual variance on indicator X4 at T2
bf06_23_t2 ~~ res5*bf06_23_t2  # This allows residual variance on indicator X5 at T2
bf06_28_t2 ~~ res6*bf06_28_t2  # This allows residual variance on indicator X6 at T2 
bf06_33_t2 ~~ res7*bf06_33_t2  # This allows residual variance on indicator X7 at T2 
bf06_38_t2 ~~ res8*bf06_38_t2  # This allows residual variance on indicator X8 at T2
bf06_43_t2 ~~ res9*bf06_43_t2  # This allows residual variance on indicator X9 at T2
bf06_48_t2 ~~ res10*bf06_48_t2 # This allows residual variance on indicator X10 at T2
bf06_53_t2 ~~ res11*bf06_53_t2 # This allows residual variance on indicator X11 at T2
bf06_58_t2 ~~ res12*bf06_58_t2 # This allows residual variance on indicator X12 at T2

bf06_03_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_08_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_13_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_18_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_23_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_28_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_33_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_38_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_43_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_48_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_53_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_58_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_03_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_08_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_13_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_18_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_23_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_28_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_33_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_38_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_43_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_48_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_53_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_58_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_consc_ideal_hyp4 <- lavaan(mi_lcs_consc_ideal_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 18189.51 18393.17 0.863 0.056 0.064
# parameters of interest
params_lcs_consc_ideal_hyp4 <- broom::tidy(fit_mi_lcs_consc_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.017 NA NA
d_consc_1 =~ consc_t2 1.000 0.732 NA NA
d_consc_1 ~1 0.455 1.547 3.980 0.000
consc_t1 ~1 1.659 4.064 33.647 0.000
d_consc_1 ~~ d_consc_1 0.074 0.853 2.968 0.003
d_consc_1 ~ consc_t1 -0.276 -0.383 -3.825 0.000
d_consc_1 ~~ sb06_01_t1 0.006 0.021 0.262 0.793
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.690 0.000

Correlation of general change goal with conscientiousness change score (ideal-self) is not significantly different from zero, r = 0.006, p = 0.793.

3.6.1.11 Conscientiousness - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_curr_specif_hyp4 <- '
consc_t1 =~ 1*bf05_03_t1 + lamb2*bf05_08_t1 + lamb3*bf05_13_t1 + lamb4*bf05_18_t1 + lamb5*bf05_23_t1 + lamb6*bf05_28_t1 + lamb7*bf05_33_t1 + lamb8*bf05_38_t1 + lamb9*bf05_43_t1 + lamb10*bf05_48_t1 + lamb11*bf05_53_t1 + lamb12*bf05_58_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*bf05_03_t2 + lamb2*bf05_08_t2 + lamb3*bf05_13_t2 + lamb4*bf05_18_t2 + lamb5*bf05_23_t2 + lamb6*bf05_28_t2 + lamb7*bf05_33_t2 + lamb8*bf05_38_t2 + lamb9*bf05_43_t2 + lamb10*bf05_48_t2 + lamb11*bf05_53_t2 + lamb12*bf05_58_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

goals =~ 1*sb07_07_t1 + sb07_08_t1 + sb07_09_t1 # latent change goal variable (three facets per trait)

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf05_03_t1 ~~ bf05_03_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_08_t1 ~~ bf05_08_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_13_t1 ~~ bf05_13_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_18_t1 ~~ bf05_18_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_23_t1 ~~ bf05_23_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_28_t1 ~~ bf05_28_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_33_t1 ~~ bf05_33_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_38_t1 ~~ bf05_38_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_43_t1 ~~ bf05_43_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_48_t1 ~~ bf05_48_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_53_t1 ~~ bf05_53_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_58_t1 ~~ bf05_58_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_03_t1 ~~ res1*bf05_03_t1   # This allows residual variance on indicator X1 at T1 
bf05_08_t1 ~~ res2*bf05_08_t1   # This allows residual variance on indicator X2 at T1
bf05_13_t1 ~~ res3*bf05_13_t1   # This allows residual variance on indicator X3 at T1
bf05_18_t1 ~~ res4*bf05_18_t1   # This allows residual variance on indicator X4 at T1
bf05_23_t1 ~~ res5*bf05_23_t1   # This allows residual variance on indicator X5 at T1
bf05_28_t1 ~~ res6*bf05_28_t1   # This allows residual variance on indicator X6 at T1 
bf05_33_t1 ~~ res7*bf05_33_t1   # This allows residual variance on indicator X7 at T1
bf05_38_t1 ~~ res8*bf05_38_t1   # This allows residual variance on indicator X8 at T1
bf05_43_t1 ~~ res9*bf05_43_t1   # This allows residual variance on indicator X9 at T1
bf05_48_t1 ~~ res10*bf05_48_t1  # This allows residual variance on indicator X10 at T1
bf05_53_t1 ~~ res11*bf05_53_t1  # This allows residual variance on indicator X11 at T1
bf05_58_t1 ~~ res12*bf05_58_t1  # This allows residual variance on indicator X12 at T1

bf05_03_t2 ~~ res1*bf05_03_t2  # This allows residual variance on indicator X1 at T2 
bf05_08_t2 ~~ res2*bf05_08_t2  # This allows residual variance on indicator X2 at T2 
bf05_13_t2 ~~ res3*bf05_13_t2  # This allows residual variance on indicator X3 at T2
bf05_18_t2 ~~ res4*bf05_18_t2  # This allows residual variance on indicator X4 at T2
bf05_23_t2 ~~ res5*bf05_23_t2  # This allows residual variance on indicator X5 at T2
bf05_28_t2 ~~ res6*bf05_28_t2  # This allows residual variance on indicator X6 at T2 
bf05_33_t2 ~~ res7*bf05_33_t2  # This allows residual variance on indicator X7 at T2 
bf05_38_t2 ~~ res8*bf05_38_t2  # This allows residual variance on indicator X8 at T2
bf05_43_t2 ~~ res9*bf05_43_t2  # This allows residual variance on indicator X9 at T2
bf05_48_t2 ~~ res10*bf05_48_t2 # This allows residual variance on indicator X10 at T2
bf05_53_t2 ~~ res11*bf05_53_t2 # This allows residual variance on indicator X11 at T2
bf05_58_t2 ~~ res12*bf05_58_t2 # This allows residual variance on indicator X12 at T2

bf05_03_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_08_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_13_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_18_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_23_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_28_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_33_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_38_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_43_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_48_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_53_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_58_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_03_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_08_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_13_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_18_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_23_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_28_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_33_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_38_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_43_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_48_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_53_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_58_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_07_t1 ~~ sb07_07_t1
sb07_08_t1 ~~ sb07_08_t1
sb07_09_t1 ~~ sb07_09_t1

sb07_07_t1 ~ 1
sb07_08_t1 ~ 1
sb07_09_t1 ~ 1
'
fit_mi_lcs_consc_curr_specif_hyp4 <- lavaan(mi_lcs_consc_curr_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 23384.84 23614.9 0.826 0.084 0.133
# parameters of interest
params_lcs_consc_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_consc_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "goals ~~ d_consc_1", "goals ~~ goals", # change goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.044 NA NA
d_consc_1 =~ consc_t2 1.000 0.470 NA NA
d_consc_1 ~1 0.213 0.446 1.928 0.054
consc_t1 ~1 2.837 2.678 38.156 0.000
d_consc_1 ~~ d_consc_1 0.205 0.899 5.615 0.000
d_consc_1 ~ consc_t1 -0.143 -0.318 -3.550 0.000
goals ~~ d_consc_1 0.011 0.021 0.225 0.822
goals ~~ goals 1.330 1.000 8.299 0.000

Correlation of specific, facet-level change goals with conscientiousness change score (current-self) is not significantly different from zero, r = 0.011, p = 0.822.

3.6.1.12 Conscientiousness - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_ideal_specif_hyp4 <- '
consc_t1 =~ 1*bf06_03_t1 + lamb2*bf06_08_t1 + lamb3*bf06_13_t1 + lamb4*bf06_18_t1 + lamb5*bf06_23_t1 + lamb6*bf06_28_t1 + lamb7*bf06_33_t1 + lamb8*bf06_38_t1 + lamb9*bf06_43_t1 + lamb10*bf06_48_t1 + lamb11*bf06_53_t1 + lamb12*bf06_58_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*bf06_03_t2 + lamb2*bf06_08_t2 + lamb3*bf06_13_t2 + lamb4*bf06_18_t2 + lamb5*bf06_23_t2 + lamb6*bf06_28_t2 + lamb7*bf06_33_t2 + lamb8*bf06_38_t2 + lamb9*bf06_43_t2 + lamb10*bf06_48_t2 + lamb11*bf06_53_t2 + lamb12*bf06_58_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

goals =~ 1*sb07_07_t1 + sb07_08_t1 + sb07_09_t1 # latent change goal variable (three facets per trait)

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf06_03_t1 ~~ bf06_03_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_08_t1 ~~ bf06_08_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_13_t1 ~~ bf06_13_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_18_t1 ~~ bf06_18_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_23_t1 ~~ bf06_23_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_28_t1 ~~ bf06_28_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_33_t1 ~~ bf06_33_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_38_t1 ~~ bf06_38_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_43_t1 ~~ bf06_43_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_48_t1 ~~ bf06_48_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_53_t1 ~~ bf06_53_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_58_t1 ~~ bf06_58_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_03_t1 ~~ res1*bf06_03_t1   # This allows residual variance on indicator X1 at T1 
bf06_08_t1 ~~ res2*bf06_08_t1   # This allows residual variance on indicator X2 at T1
bf06_13_t1 ~~ res3*bf06_13_t1   # This allows residual variance on indicator X3 at T1
bf06_18_t1 ~~ res4*bf06_18_t1   # This allows residual variance on indicator X4 at T1
bf06_23_t1 ~~ res5*bf06_23_t1   # This allows residual variance on indicator X5 at T1
bf06_28_t1 ~~ res6*bf06_28_t1   # This allows residual variance on indicator X6 at T1 
bf06_33_t1 ~~ res7*bf06_33_t1   # This allows residual variance on indicator X7 at T1
bf06_38_t1 ~~ res8*bf06_38_t1   # This allows residual variance on indicator X8 at T1
bf06_43_t1 ~~ res9*bf06_43_t1   # This allows residual variance on indicator X9 at T1
bf06_48_t1 ~~ res10*bf06_48_t1  # This allows residual variance on indicator X10 at T1
bf06_53_t1 ~~ res11*bf06_53_t1  # This allows residual variance on indicator X11 at T1
bf06_58_t1 ~~ res12*bf06_58_t1  # This allows residual variance on indicator X12 at T1

bf06_03_t2 ~~ res1*bf06_03_t2  # This allows residual variance on indicator X1 at T2 
bf06_08_t2 ~~ res2*bf06_08_t2  # This allows residual variance on indicator X2 at T2 
bf06_13_t2 ~~ res3*bf06_13_t2  # This allows residual variance on indicator X3 at T2
bf06_18_t2 ~~ res4*bf06_18_t2  # This allows residual variance on indicator X4 at T2
bf06_23_t2 ~~ res5*bf06_23_t2  # This allows residual variance on indicator X5 at T2
bf06_28_t2 ~~ res6*bf06_28_t2  # This allows residual variance on indicator X6 at T2 
bf06_33_t2 ~~ res7*bf06_33_t2  # This allows residual variance on indicator X7 at T2 
bf06_38_t2 ~~ res8*bf06_38_t2  # This allows residual variance on indicator X8 at T2
bf06_43_t2 ~~ res9*bf06_43_t2  # This allows residual variance on indicator X9 at T2
bf06_48_t2 ~~ res10*bf06_48_t2 # This allows residual variance on indicator X10 at T2
bf06_53_t2 ~~ res11*bf06_53_t2 # This allows residual variance on indicator X11 at T2
bf06_58_t2 ~~ res12*bf06_58_t2 # This allows residual variance on indicator X12 at T2

bf06_03_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_08_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_13_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_18_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_23_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_28_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_33_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_38_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_43_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_48_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_53_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_58_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_03_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_08_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_13_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_18_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_23_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_28_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_33_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_38_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_43_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_48_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_53_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_58_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_07_t1 ~~ sb07_07_t1
sb07_08_t1 ~~ sb07_08_t1
sb07_09_t1 ~~ sb07_09_t1

sb07_07_t1 ~ 1
sb07_08_t1 ~ 1
sb07_09_t1 ~ 1
'
fit_mi_lcs_consc_ideal_specif_hyp4 <- lavaan(mi_lcs_consc_ideal_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 20301.34 20531.4 0.885 0.051 0.061
# parameters of interest
params_lcs_consc_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_consc_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "goals ~~ d_consc_1", "goals ~~ goals", # change goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.017 NA NA
d_consc_1 =~ consc_t2 1.000 0.731 NA NA
d_consc_1 ~1 0.454 1.547 4.038 0.000
consc_t1 ~1 1.659 4.071 33.654 0.000
d_consc_1 ~~ d_consc_1 0.073 0.854 2.963 0.003
d_consc_1 ~ consc_t1 -0.275 -0.382 -3.883 0.000
goals ~~ d_consc_1 0.027 0.086 1.098 0.272
goals ~~ goals 1.331 1.000 8.264 0.000

Correlation of specific, facet-level change goals with conscientiousness change score (ideal-self) is not significantly different from zero, r = 0.027, p = 0.272.

3.6.1.13 Neuroticism - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_curr_hyp4 <- '
neuro_t1 =~ 1*bf05_04_t1 + lamb2*bf05_09_t1 + lamb3*bf05_14_t1 + lamb4*bf05_19_t1 + lamb5*bf05_24_t1 + lamb6*bf05_29_t1 + lamb7*bf05_34_t1 + lamb8*bf05_39_t1 + lamb9*bf05_44_t1 + lamb10*bf05_49_t1 + lamb11*bf05_54_t1 + lamb12*bf05_59_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*bf05_04_t2 + lamb2*bf05_09_t2 + lamb3*bf05_14_t2 + lamb4*bf05_19_t2 + lamb5*bf05_24_t2 + lamb6*bf05_29_t2 + lamb7*bf05_34_t2 + lamb8*bf05_39_t2 + lamb9*bf05_44_t2 + lamb10*bf05_49_t2 + lamb11*bf05_54_t2 + lamb12*bf05_59_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf05_04_t1 ~~ bf05_04_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_09_t1 ~~ bf05_09_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_14_t1 ~~ bf05_14_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_19_t1 ~~ bf05_19_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_24_t1 ~~ bf05_24_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_29_t1 ~~ bf05_29_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_34_t1 ~~ bf05_34_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_39_t1 ~~ bf05_39_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_44_t1 ~~ bf05_44_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_49_t1 ~~ bf05_49_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_54_t1 ~~ bf05_54_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_59_t1 ~~ bf05_59_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_04_t1 ~~ res1*bf05_04_t1   # This allows residual variance on indicator X1 at T1 
bf05_09_t1 ~~ res2*bf05_09_t1   # This allows residual variance on indicator X2 at T1
bf05_14_t1 ~~ res3*bf05_14_t1   # This allows residual variance on indicator X3 at T1
bf05_19_t1 ~~ res4*bf05_19_t1   # This allows residual variance on indicator X4 at T1
bf05_24_t1 ~~ res5*bf05_24_t1   # This allows residual variance on indicator X5 at T1
bf05_29_t1 ~~ res6*bf05_29_t1   # This allows residual variance on indicator X6 at T1 
bf05_34_t1 ~~ res7*bf05_34_t1   # This allows residual variance on indicator X7 at T1
bf05_39_t1 ~~ res8*bf05_39_t1   # This allows residual variance on indicator X8 at T1
bf05_44_t1 ~~ res9*bf05_44_t1   # This allows residual variance on indicator X9 at T1
bf05_49_t1 ~~ res10*bf05_49_t1  # This allows residual variance on indicator X10 at T1
bf05_54_t1 ~~ res11*bf05_54_t1  # This allows residual variance on indicator X11 at T1
bf05_59_t1 ~~ res12*bf05_59_t1  # This allows residual variance on indicator X12 at T1

bf05_04_t2 ~~ res1*bf05_04_t2  # This allows residual variance on indicator X1 at T2 
bf05_09_t2 ~~ res2*bf05_09_t2  # This allows residual variance on indicator X2 at T2 
bf05_14_t2 ~~ res3*bf05_14_t2  # This allows residual variance on indicator X3 at T2
bf05_19_t2 ~~ res4*bf05_19_t2  # This allows residual variance on indicator X4 at T2
bf05_24_t2 ~~ res5*bf05_24_t2  # This allows residual variance on indicator X5 at T2
bf05_29_t2 ~~ res6*bf05_29_t2  # This allows residual variance on indicator X6 at T2 
bf05_34_t2 ~~ res7*bf05_34_t2  # This allows residual variance on indicator X7 at T2 
bf05_39_t2 ~~ res8*bf05_39_t2  # This allows residual variance on indicator X8 at T2
bf05_44_t2 ~~ res9*bf05_44_t2  # This allows residual variance on indicator X9 at T2
bf05_49_t2 ~~ res10*bf05_49_t2 # This allows residual variance on indicator X10 at T2
bf05_54_t2 ~~ res11*bf05_54_t2 # This allows residual variance on indicator X11 at T2
bf05_59_t2 ~~ res12*bf05_59_t2 # This allows residual variance on indicator X12 at T2

bf05_04_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_09_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_14_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_19_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_24_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_29_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_34_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_39_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_44_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_49_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_54_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_59_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_04_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_09_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_14_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_19_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_24_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_29_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_34_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_39_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_44_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_49_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_54_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_59_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_neuro_curr_hyp4 <- lavaan(mi_lcs_neuro_curr_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 21967.85 22171.51 0.88 0.073 0.078
# parameters of interest
params_lcs_neuro_curr_hyp4 <- broom::tidy(fit_mi_lcs_neuro_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                     "d_neuro_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                     "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 0.999 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.578 NA NA
d_neuro_1 ~1 0.699 1.366 5.978 0.000
neuro_t1 ~1 2.784 3.152 42.894 0.000
d_neuro_1 ~~ d_neuro_1 0.240 0.918 5.955 0.000
d_neuro_1 ~ neuro_t1 -0.166 -0.287 -4.346 0.000
d_neuro_1 ~~ sb06_01_t1 0.034 0.069 1.055 0.291
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.075 3.054 53.735 0.000

Correlation of general change goal with neuroticism change score (current-self) is not significantly different from zero, r = 0.034, p = 0.291.

3.6.1.14 Neuroticism - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_ideal_hyp4 <- '
neuro_t1 =~ 1*bf06_04_t1 + lamb2*bf06_09_t1 + lamb3*bf06_14_t1 + lamb4*bf06_19_t1 + lamb5*bf06_24_t1 + lamb6*bf06_29_t1 + lamb7*bf06_34_t1 + lamb8*bf06_39_t1 + lamb9*bf06_44_t1 + lamb10*bf06_49_t1 + lamb11*bf06_54_t1 + lamb12*bf06_59_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*bf06_04_t2 + lamb2*bf06_09_t2 + lamb3*bf06_14_t2 + lamb4*bf06_19_t2 + lamb5*bf06_24_t2 + lamb6*bf06_29_t2 + lamb7*bf06_34_t2 + lamb8*bf06_39_t2 + lamb9*bf06_44_t2 + lamb10*bf06_49_t2 + lamb11*bf06_54_t2 + lamb12*bf06_59_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf06_04_t1 ~~ bf06_04_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_09_t1 ~~ bf06_09_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_14_t1 ~~ bf06_14_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_19_t1 ~~ bf06_19_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_24_t1 ~~ bf06_24_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_29_t1 ~~ bf06_29_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_34_t1 ~~ bf06_34_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_39_t1 ~~ bf06_39_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_44_t1 ~~ bf06_44_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_49_t1 ~~ bf06_49_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_54_t1 ~~ bf06_54_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_59_t1 ~~ bf06_59_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_04_t1 ~~ res1*bf06_04_t1   # This allows residual variance on indicator X1 at T1 
bf06_09_t1 ~~ res2*bf06_09_t1   # This allows residual variance on indicator X2 at T1
bf06_14_t1 ~~ res3*bf06_14_t1   # This allows residual variance on indicator X3 at T1
bf06_19_t1 ~~ res4*bf06_19_t1   # This allows residual variance on indicator X4 at T1
bf06_24_t1 ~~ res5*bf06_24_t1   # This allows residual variance on indicator X5 at T1
bf06_29_t1 ~~ res6*bf06_29_t1   # This allows residual variance on indicator X6 at T1 
bf06_34_t1 ~~ res7*bf06_34_t1   # This allows residual variance on indicator X7 at T1
bf06_39_t1 ~~ res8*bf06_39_t1   # This allows residual variance on indicator X8 at T1
bf06_44_t1 ~~ res9*bf06_44_t1   # This allows residual variance on indicator X9 at T1
bf06_49_t1 ~~ res10*bf06_49_t1  # This allows residual variance on indicator X10 at T1
bf06_54_t1 ~~ res11*bf06_54_t1  # This allows residual variance on indicator X11 at T1
bf06_59_t1 ~~ res12*bf06_59_t1  # This allows residual variance on indicator X12 at T1

bf06_04_t2 ~~ res1*bf06_04_t2  # This allows residual variance on indicator X1 at T2 
bf06_09_t2 ~~ res2*bf06_09_t2  # This allows residual variance on indicator X2 at T2 
bf06_14_t2 ~~ res3*bf06_14_t2  # This allows residual variance on indicator X3 at T2
bf06_19_t2 ~~ res4*bf06_19_t2  # This allows residual variance on indicator X4 at T2
bf06_24_t2 ~~ res5*bf06_24_t2  # This allows residual variance on indicator X5 at T2
bf06_29_t2 ~~ res6*bf06_29_t2  # This allows residual variance on indicator X6 at T2 
bf06_34_t2 ~~ res7*bf06_34_t2  # This allows residual variance on indicator X7 at T2 
bf06_39_t2 ~~ res8*bf06_39_t2  # This allows residual variance on indicator X8 at T2
bf06_44_t2 ~~ res9*bf06_44_t2  # This allows residual variance on indicator X9 at T2
bf06_49_t2 ~~ res10*bf06_49_t2 # This allows residual variance on indicator X10 at T2
bf06_54_t2 ~~ res11*bf06_54_t2 # This allows residual variance on indicator X11 at T2
bf06_59_t2 ~~ res12*bf06_59_t2 # This allows residual variance on indicator X12 at T2

bf06_04_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_09_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_14_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_19_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_24_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_29_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_34_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_39_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_44_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_49_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_54_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_59_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_04_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_09_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_14_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_19_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_24_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_29_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_34_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_39_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_44_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_49_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_54_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_59_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_neuro_ideal_hyp4 <- lavaan(mi_lcs_neuro_ideal_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 19295.58 19499.23 0.863 0.055 0.068
# parameters of interest
params_lcs_neuro_ideal_hyp4 <- broom::tidy(fit_mi_lcs_neuro_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 0.983 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.704 NA NA
d_neuro_1 ~1 1.107 4.075 3.072 0.002
neuro_t1 ~1 4.551 11.993 124.589 0.000
d_neuro_1 ~~ d_neuro_1 0.066 0.888 3.435 0.001
d_neuro_1 ~ neuro_t1 -0.239 -0.334 -3.090 0.002
d_neuro_1 ~~ sb06_01_t1 0.021 0.081 0.962 0.336
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.316 0.000
sb06_01_t1 ~1 3.075 3.053 53.683 0.000

Correlation of general change goal with neuroticism change score (ideal-self) is not significantly different from zero, r = 0.021, p = 0.336.

3.6.1.15 Neuroticism - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_curr_specif_hyp4 <- '
neuro_t1 =~ 1*bf05_04_t1 + lamb2*bf05_09_t1 + lamb3*bf05_14_t1 + lamb4*bf05_19_t1 + lamb5*bf05_24_t1 + lamb6*bf05_29_t1 + lamb7*bf05_34_t1 + lamb8*bf05_39_t1 + lamb9*bf05_44_t1 + lamb10*bf05_49_t1 + lamb11*bf05_54_t1 + lamb12*bf05_59_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*bf05_04_t2 + lamb2*bf05_09_t2 + lamb3*bf05_14_t2 + lamb4*bf05_19_t2 + lamb5*bf05_24_t2 + lamb6*bf05_29_t2 + lamb7*bf05_34_t2 + lamb8*bf05_39_t2 + lamb9*bf05_44_t2 + lamb10*bf05_49_t2 + lamb11*bf05_54_t2 + lamb12*bf05_59_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

goals =~ 1*sb07_10_t1 + sb07_11_t1 + sb07_12_t1 # latent change goal variable (three facets per trait)

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf05_04_t1 ~~ bf05_04_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_09_t1 ~~ bf05_09_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_14_t1 ~~ bf05_14_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_19_t1 ~~ bf05_19_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_24_t1 ~~ bf05_24_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_29_t1 ~~ bf05_29_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_34_t1 ~~ bf05_34_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_39_t1 ~~ bf05_39_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_44_t1 ~~ bf05_44_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_49_t1 ~~ bf05_49_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_54_t1 ~~ bf05_54_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_59_t1 ~~ bf05_59_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_04_t1 ~~ res1*bf05_04_t1   # This allows residual variance on indicator X1 at T1 
bf05_09_t1 ~~ res2*bf05_09_t1   # This allows residual variance on indicator X2 at T1
bf05_14_t1 ~~ res3*bf05_14_t1   # This allows residual variance on indicator X3 at T1
bf05_19_t1 ~~ res4*bf05_19_t1   # This allows residual variance on indicator X4 at T1
bf05_24_t1 ~~ res5*bf05_24_t1   # This allows residual variance on indicator X5 at T1
bf05_29_t1 ~~ res6*bf05_29_t1   # This allows residual variance on indicator X6 at T1 
bf05_34_t1 ~~ res7*bf05_34_t1   # This allows residual variance on indicator X7 at T1
bf05_39_t1 ~~ res8*bf05_39_t1   # This allows residual variance on indicator X8 at T1
bf05_44_t1 ~~ res9*bf05_44_t1   # This allows residual variance on indicator X9 at T1
bf05_49_t1 ~~ res10*bf05_49_t1  # This allows residual variance on indicator X10 at T1
bf05_54_t1 ~~ res11*bf05_54_t1  # This allows residual variance on indicator X11 at T1
bf05_59_t1 ~~ res12*bf05_59_t1  # This allows residual variance on indicator X12 at T1

bf05_04_t2 ~~ res1*bf05_04_t2  # This allows residual variance on indicator X1 at T2 
bf05_09_t2 ~~ res2*bf05_09_t2  # This allows residual variance on indicator X2 at T2 
bf05_14_t2 ~~ res3*bf05_14_t2  # This allows residual variance on indicator X3 at T2
bf05_19_t2 ~~ res4*bf05_19_t2  # This allows residual variance on indicator X4 at T2
bf05_24_t2 ~~ res5*bf05_24_t2  # This allows residual variance on indicator X5 at T2
bf05_29_t2 ~~ res6*bf05_29_t2  # This allows residual variance on indicator X6 at T2 
bf05_34_t2 ~~ res7*bf05_34_t2  # This allows residual variance on indicator X7 at T2 
bf05_39_t2 ~~ res8*bf05_39_t2  # This allows residual variance on indicator X8 at T2
bf05_44_t2 ~~ res9*bf05_44_t2  # This allows residual variance on indicator X9 at T2
bf05_49_t2 ~~ res10*bf05_49_t2 # This allows residual variance on indicator X10 at T2
bf05_54_t2 ~~ res11*bf05_54_t2 # This allows residual variance on indicator X11 at T2
bf05_59_t2 ~~ res12*bf05_59_t2 # This allows residual variance on indicator X12 at T2

bf05_04_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_09_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_14_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_19_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_24_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_29_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_34_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_39_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_44_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_49_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_54_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_59_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_04_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_09_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_14_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_19_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_24_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_29_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_34_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_39_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_44_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_49_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_54_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_59_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_10_t1 ~~ sb07_10_t1
sb07_11_t1 ~~ sb07_11_t1
sb07_12_t1 ~~ sb07_12_t1

sb07_10_t1 ~ 1
sb07_11_t1 ~ 1
sb07_12_t1 ~ 1
'
fit_mi_lcs_neuro_curr_specif_hyp4 <- lavaan(mi_lcs_neuro_curr_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 24180.79 24410.85 0.846 0.081 0.139
# parameters of interest
params_lcs_neuro_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_neuro_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "goals ~~ d_neuro_1", "goals ~~ goals", # change goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.063 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.654 NA NA
d_neuro_1 ~1 0.923 1.695 6.275 0.000
neuro_t1 ~1 2.784 3.144 42.888 0.000
d_neuro_1 ~~ d_neuro_1 0.249 0.839 5.886 0.000
d_neuro_1 ~ neuro_t1 -0.246 -0.401 -4.959 0.000
goals ~~ d_neuro_1 -0.118 -0.216 -2.157 0.031
goals ~~ goals 1.210 1.000 6.558 0.000

The correlation of specific, facet-level change goals with neuroticism change score (current-self) is significantly different from zero, r = -0.118, p = 0.031.

3.6.1.16 Neuroticism - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_ideal_specif_hyp4 <- '
neuro_t1 =~ 1*bf06_04_t1 + lamb2*bf06_09_t1 + lamb3*bf06_14_t1 + lamb4*bf06_19_t1 + lamb5*bf06_24_t1 + lamb6*bf06_29_t1 + lamb7*bf06_34_t1 + lamb8*bf06_39_t1 + lamb9*bf06_44_t1 + lamb10*bf06_49_t1 + lamb11*bf06_54_t1 + lamb12*bf06_59_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*bf06_04_t2 + lamb2*bf06_09_t2 + lamb3*bf06_14_t2 + lamb4*bf06_19_t2 + lamb5*bf06_24_t2 + lamb6*bf06_29_t2 + lamb7*bf06_34_t2 + lamb8*bf06_39_t2 + lamb9*bf06_44_t2 + lamb10*bf06_49_t2 + lamb11*bf06_54_t2 + lamb12*bf06_59_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

goals =~ 1*sb07_10_t1 + sb07_11_t1 + sb07_12_t1 # latent change goal variable (three facets per trait)

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf06_04_t1 ~~ bf06_04_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_09_t1 ~~ bf06_09_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_14_t1 ~~ bf06_14_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_19_t1 ~~ bf06_19_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_24_t1 ~~ bf06_24_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_29_t1 ~~ bf06_29_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_34_t1 ~~ bf06_34_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_39_t1 ~~ bf06_39_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_44_t1 ~~ bf06_44_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_49_t1 ~~ bf06_49_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_54_t1 ~~ bf06_54_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_59_t1 ~~ bf06_59_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_04_t1 ~~ res1*bf06_04_t1   # This allows residual variance on indicator X1 at T1 
bf06_09_t1 ~~ res2*bf06_09_t1   # This allows residual variance on indicator X2 at T1
bf06_14_t1 ~~ res3*bf06_14_t1   # This allows residual variance on indicator X3 at T1
bf06_19_t1 ~~ res4*bf06_19_t1   # This allows residual variance on indicator X4 at T1
bf06_24_t1 ~~ res5*bf06_24_t1   # This allows residual variance on indicator X5 at T1
bf06_29_t1 ~~ res6*bf06_29_t1   # This allows residual variance on indicator X6 at T1 
bf06_34_t1 ~~ res7*bf06_34_t1   # This allows residual variance on indicator X7 at T1
bf06_39_t1 ~~ res8*bf06_39_t1   # This allows residual variance on indicator X8 at T1
bf06_44_t1 ~~ res9*bf06_44_t1   # This allows residual variance on indicator X9 at T1
bf06_49_t1 ~~ res10*bf06_49_t1  # This allows residual variance on indicator X10 at T1
bf06_54_t1 ~~ res11*bf06_54_t1  # This allows residual variance on indicator X11 at T1
bf06_59_t1 ~~ res12*bf06_59_t1  # This allows residual variance on indicator X12 at T1

bf06_04_t2 ~~ res1*bf06_04_t2  # This allows residual variance on indicator X1 at T2 
bf06_09_t2 ~~ res2*bf06_09_t2  # This allows residual variance on indicator X2 at T2 
bf06_14_t2 ~~ res3*bf06_14_t2  # This allows residual variance on indicator X3 at T2
bf06_19_t2 ~~ res4*bf06_19_t2  # This allows residual variance on indicator X4 at T2
bf06_24_t2 ~~ res5*bf06_24_t2  # This allows residual variance on indicator X5 at T2
bf06_29_t2 ~~ res6*bf06_29_t2  # This allows residual variance on indicator X6 at T2 
bf06_34_t2 ~~ res7*bf06_34_t2  # This allows residual variance on indicator X7 at T2 
bf06_39_t2 ~~ res8*bf06_39_t2  # This allows residual variance on indicator X8 at T2
bf06_44_t2 ~~ res9*bf06_44_t2  # This allows residual variance on indicator X9 at T2
bf06_49_t2 ~~ res10*bf06_49_t2 # This allows residual variance on indicator X10 at T2
bf06_54_t2 ~~ res11*bf06_54_t2 # This allows residual variance on indicator X11 at T2
bf06_59_t2 ~~ res12*bf06_59_t2 # This allows residual variance on indicator X12 at T2

bf06_04_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_09_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_14_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_19_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_24_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_29_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_34_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_39_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_44_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_49_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_54_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_59_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_04_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_09_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_14_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_19_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_24_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_29_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_34_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_39_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_44_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_49_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_54_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_59_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_10_t1 ~~ sb07_10_t1
sb07_11_t1 ~~ sb07_11_t1
sb07_12_t1 ~~ sb07_12_t1

sb07_10_t1 ~ 1
sb07_11_t1 ~ 1
sb07_12_t1 ~ 1
'
fit_mi_lcs_neuro_ideal_specif_hyp4 <- lavaan(mi_lcs_neuro_ideal_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 21514.63 21744.69 0.867 0.053 0.065
# parameters of interest
params_lcs_neuro_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_neuro_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "goals ~~ d_neuro_1", "goals ~~ goals", # change goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 0.978 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.697 NA NA
d_neuro_1 ~1 1.071 3.963 3.033 0.002
neuro_t1 ~1 4.551 11.996 124.595 0.000
d_neuro_1 ~~ d_neuro_1 0.065 0.895 3.427 0.001
d_neuro_1 ~ neuro_t1 -0.231 -0.325 -3.052 0.002
goals ~~ d_neuro_1 -0.008 -0.026 -0.342 0.732
goals ~~ goals 1.242 1.000 6.752 0.000

Correlation of specific, facet-level change goals with neuroticism change score (ideal-self) is not significantly different from zero, r = -0.008, p = 0.732.

3.6.1.17 Openness - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_curr_hyp4 <- '
openn_t1 =~ 1*bf05_05_t1 + lamb2*bf05_10_t1 + lamb3*bf05_15_t1 + lamb4*bf05_20_t1 + lamb5*bf05_25_t1 + lamb6*bf05_30_t1 + lamb7*bf05_35_t1 + lamb8*bf05_40_t1 + lamb9*bf05_45_t1 + lamb10*bf05_50_t1 + lamb11*bf05_55_t1 + lamb12*bf05_60_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*bf05_05_t2 + lamb2*bf05_10_t2 + lamb3*bf05_15_t2 + lamb4*bf05_20_t2 + lamb5*bf05_25_t2 + lamb6*bf05_30_t2 + lamb7*bf05_35_t2 + lamb8*bf05_40_t2 + lamb9*bf05_45_t2 + lamb10*bf05_50_t2 + lamb11*bf05_55_t2 + lamb12*bf05_60_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf05_05_t1 ~~ bf05_05_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_10_t1 ~~ bf05_10_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_15_t1 ~~ bf05_15_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_20_t1 ~~ bf05_20_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_25_t1 ~~ bf05_25_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_30_t1 ~~ bf05_30_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_35_t1 ~~ bf05_35_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_40_t1 ~~ bf05_40_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_45_t1 ~~ bf05_45_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_50_t1 ~~ bf05_50_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_55_t1 ~~ bf05_55_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_60_t1 ~~ bf05_60_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_05_t1 ~~ res1*bf05_05_t1   # This allows residual variance on indicator X1 at T1 
bf05_10_t1 ~~ res2*bf05_10_t1   # This allows residual variance on indicator X2 at T1
bf05_15_t1 ~~ res3*bf05_15_t1   # This allows residual variance on indicator X3 at T1
bf05_20_t1 ~~ res4*bf05_20_t1   # This allows residual variance on indicator X4 at T1
bf05_25_t1 ~~ res5*bf05_25_t1   # This allows residual variance on indicator X5 at T1
bf05_30_t1 ~~ res6*bf05_30_t1   # This allows residual variance on indicator X6 at T1 
bf05_35_t1 ~~ res7*bf05_35_t1   # This allows residual variance on indicator X7 at T1
bf05_40_t1 ~~ res8*bf05_40_t1   # This allows residual variance on indicator X8 at T1
bf05_45_t1 ~~ res9*bf05_45_t1   # This allows residual variance on indicator X9 at T1
bf05_50_t1 ~~ res10*bf05_50_t1  # This allows residual variance on indicator X10 at T1
bf05_55_t1 ~~ res11*bf05_55_t1  # This allows residual variance on indicator X11 at T1
bf05_60_t1 ~~ res12*bf05_60_t1  # This allows residual variance on indicator X12 at T1

bf05_05_t2 ~~ res1*bf05_05_t2  # This allows residual variance on indicator X1 at T2 
bf05_10_t2 ~~ res2*bf05_10_t2  # This allows residual variance on indicator X2 at T2 
bf05_15_t2 ~~ res3*bf05_15_t2  # This allows residual variance on indicator X3 at T2
bf05_20_t2 ~~ res4*bf05_20_t2  # This allows residual variance on indicator X4 at T2
bf05_25_t2 ~~ res5*bf05_25_t2  # This allows residual variance on indicator X5 at T2
bf05_30_t2 ~~ res6*bf05_30_t2  # This allows residual variance on indicator X6 at T2 
bf05_35_t2 ~~ res7*bf05_35_t2  # This allows residual variance on indicator X7 at T2 
bf05_40_t2 ~~ res8*bf05_40_t2  # This allows residual variance on indicator X8 at T2
bf05_45_t2 ~~ res9*bf05_45_t2  # This allows residual variance on indicator X9 at T2
bf05_50_t2 ~~ res10*bf05_50_t2 # This allows residual variance on indicator X10 at T2
bf05_55_t2 ~~ res11*bf05_55_t2 # This allows residual variance on indicator X11 at T2
bf05_60_t2 ~~ res12*bf05_60_t2 # This allows residual variance on indicator X12 at T2

bf05_05_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_10_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_15_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_20_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_25_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_30_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_35_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_40_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_45_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_50_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_55_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_60_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_05_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_10_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_15_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_20_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_25_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_30_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_35_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_40_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_45_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_50_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_55_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_60_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_openn_curr_hyp4 <- lavaan(mi_lcs_openn_curr_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 21955.42 22159.08 0.821 0.076 0.085
# parameters of interest
params_lcs_openn_curr_hyp4 <- broom::tidy(fit_mi_lcs_openn_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                     "d_openn_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                     "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.934 NA NA
d_openn_1 =~ openn_t2 1.000 0.469 NA NA
d_openn_1 ~1 0.167 5.190 1.265 0.206
openn_t1 ~1 2.997 46.876 49.382 0.000
d_openn_1 ~~ d_openn_1 0.001 0.989 5.921 0.000
d_openn_1 ~ openn_t1 -0.053 -0.106 -1.216 0.224
d_openn_1 ~~ sb06_01_t1 -0.001 -0.045 -0.525 0.600
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.320 0.000
sb06_01_t1 ~1 3.074 3.053 53.615 0.000

Correlation of general change goal with openness change score (current-self) is not significantly different from zero, r = -0.001, p = 0.6.

3.6.1.18 Openness - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_ideal_hyp4 <- '
openn_t1 =~ 1*bf06_05_t1 + lamb2*bf06_10_t1 + lamb3*bf06_15_t1 + lamb4*bf06_20_t1 + lamb5*bf06_25_t1 + lamb6*bf06_30_t1 + lamb7*bf06_35_t1 + lamb8*bf06_40_t1 + lamb9*bf06_45_t1 + lamb10*bf06_50_t1 + lamb11*bf06_55_t1 + lamb12*bf06_60_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*bf06_05_t2 + lamb2*bf06_10_t2 + lamb3*bf06_15_t2 + lamb4*bf06_20_t2 + lamb5*bf06_25_t2 + lamb6*bf06_30_t2 + lamb7*bf06_35_t2 + lamb8*bf06_40_t2 + lamb9*bf06_45_t2 + lamb10*bf06_50_t2 + lamb11*bf06_55_t2 + lamb12*bf06_60_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

bf06_05_t1 ~~ bf06_05_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_10_t1 ~~ bf06_10_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_15_t1 ~~ bf06_15_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_20_t1 ~~ bf06_20_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_25_t1 ~~ bf06_25_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_30_t1 ~~ bf06_30_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_35_t1 ~~ bf06_35_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_40_t1 ~~ bf06_40_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_45_t1 ~~ bf06_45_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_50_t1 ~~ bf06_50_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_55_t1 ~~ bf06_55_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_60_t1 ~~ bf06_60_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_05_t1 ~~ res1*bf06_05_t1   # This allows residual variance on indicator X1 at T1 
bf06_10_t1 ~~ res2*bf06_10_t1   # This allows residual variance on indicator X2 at T1
bf06_15_t1 ~~ res3*bf06_15_t1   # This allows residual variance on indicator X3 at T1
bf06_20_t1 ~~ res4*bf06_20_t1   # This allows residual variance on indicator X4 at T1
bf06_25_t1 ~~ res5*bf06_25_t1   # This allows residual variance on indicator X5 at T1
bf06_30_t1 ~~ res6*bf06_30_t1   # This allows residual variance on indicator X6 at T1 
bf06_35_t1 ~~ res7*bf06_35_t1   # This allows residual variance on indicator X7 at T1
bf06_40_t1 ~~ res8*bf06_40_t1   # This allows residual variance on indicator X8 at T1
bf06_45_t1 ~~ res9*bf06_45_t1   # This allows residual variance on indicator X9 at T1
bf06_50_t1 ~~ res10*bf06_50_t1  # This allows residual variance on indicator X10 at T1
bf06_55_t1 ~~ res11*bf06_55_t1  # This allows residual variance on indicator X11 at T1
bf06_60_t1 ~~ res12*bf06_60_t1  # This allows residual variance on indicator X12 at T1

bf06_05_t2 ~~ res1*bf06_05_t2  # This allows residual variance on indicator X1 at T2 
bf06_10_t2 ~~ res2*bf06_10_t2  # This allows residual variance on indicator X2 at T2 
bf06_15_t2 ~~ res3*bf06_15_t2  # This allows residual variance on indicator X3 at T2
bf06_20_t2 ~~ res4*bf06_20_t2  # This allows residual variance on indicator X4 at T2
bf06_25_t2 ~~ res5*bf06_25_t2  # This allows residual variance on indicator X5 at T2
bf06_30_t2 ~~ res6*bf06_30_t2  # This allows residual variance on indicator X6 at T2 
bf06_35_t2 ~~ res7*bf06_35_t2  # This allows residual variance on indicator X7 at T2 
bf06_40_t2 ~~ res8*bf06_40_t2  # This allows residual variance on indicator X8 at T2
bf06_45_t2 ~~ res9*bf06_45_t2  # This allows residual variance on indicator X9 at T2
bf06_50_t2 ~~ res10*bf06_50_t2 # This allows residual variance on indicator X10 at T2
bf06_55_t2 ~~ res11*bf06_55_t2 # This allows residual variance on indicator X11 at T2
bf06_60_t2 ~~ res12*bf06_60_t2 # This allows residual variance on indicator X12 at T2

bf06_05_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_10_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_15_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_20_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_25_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_30_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_35_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_40_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_45_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_50_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_55_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_60_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_05_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_10_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_15_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_20_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_25_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_30_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_35_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_40_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_45_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_50_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_55_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_60_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_openn_ideal_hyp4 <- lavaan(mi_lcs_openn_ideal_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 54 21060.89 21264.55 0.824 0.064 0.076
# parameters of interest
params_lcs_openn_ideal_hyp4 <- broom::tidy(fit_mi_lcs_openn_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.927 NA NA
d_openn_1 =~ openn_t2 1.000 0.608 NA NA
d_openn_1 ~1 0.415 7.593 1.640 0.101
openn_t1 ~1 3.120 37.453 46.566 0.000
d_openn_1 ~~ d_openn_1 0.003 0.958 0.572 0.568
d_openn_1 ~ openn_t1 -0.134 -0.204 -1.667 0.095
d_openn_1 ~~ sb06_01_t1 -0.005 -0.088 -0.721 0.471
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.331 0.000
sb06_01_t1 ~1 3.074 3.052 53.625 0.000

Correlation of general change goal with openness change score (ideal-self) is not significantly different from zero, r = -0.005, p = 0.471.

3.6.1.19 Openness - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_curr_specif_hyp4 <- '
openn_t1 =~ 1*bf05_05_t1 + lamb2*bf05_10_t1 + lamb3*bf05_15_t1 + lamb4*bf05_20_t1 + lamb5*bf05_25_t1 + lamb6*bf05_30_t1 + lamb7*bf05_35_t1 + lamb8*bf05_40_t1 + lamb9*bf05_45_t1 + lamb10*bf05_50_t1 + lamb11*bf05_55_t1 + lamb12*bf05_60_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*bf05_05_t2 + lamb2*bf05_10_t2 + lamb3*bf05_15_t2 + lamb4*bf05_20_t2 + lamb5*bf05_25_t2 + lamb6*bf05_30_t2 + lamb7*bf05_35_t2 + lamb8*bf05_40_t2 + lamb9*bf05_45_t2 + lamb10*bf05_50_t2 + lamb11*bf05_55_t2 + lamb12*bf05_60_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

goals =~ 1*sb07_13_t1 + sb07_14_t1 + sb07_15_t1 # latent change goal variable (three facets per trait)

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf05_05_t1 ~~ bf05_05_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_10_t1 ~~ bf05_10_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_15_t1 ~~ bf05_15_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_20_t1 ~~ bf05_20_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_25_t1 ~~ bf05_25_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_30_t1 ~~ bf05_30_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_35_t1 ~~ bf05_35_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_40_t1 ~~ bf05_40_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_45_t1 ~~ bf05_45_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_50_t1 ~~ bf05_50_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_55_t1 ~~ bf05_55_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_60_t1 ~~ bf05_60_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_05_t1 ~~ res1*bf05_05_t1   # This allows residual variance on indicator X1 at T1 
bf05_10_t1 ~~ res2*bf05_10_t1   # This allows residual variance on indicator X2 at T1
bf05_15_t1 ~~ res3*bf05_15_t1   # This allows residual variance on indicator X3 at T1
bf05_20_t1 ~~ res4*bf05_20_t1   # This allows residual variance on indicator X4 at T1
bf05_25_t1 ~~ res5*bf05_25_t1   # This allows residual variance on indicator X5 at T1
bf05_30_t1 ~~ res6*bf05_30_t1   # This allows residual variance on indicator X6 at T1 
bf05_35_t1 ~~ res7*bf05_35_t1   # This allows residual variance on indicator X7 at T1
bf05_40_t1 ~~ res8*bf05_40_t1   # This allows residual variance on indicator X8 at T1
bf05_45_t1 ~~ res9*bf05_45_t1   # This allows residual variance on indicator X9 at T1
bf05_50_t1 ~~ res10*bf05_50_t1  # This allows residual variance on indicator X10 at T1
bf05_55_t1 ~~ res11*bf05_55_t1  # This allows residual variance on indicator X11 at T1
bf05_60_t1 ~~ res12*bf05_60_t1  # This allows residual variance on indicator X12 at T1

bf05_05_t2 ~~ res1*bf05_05_t2  # This allows residual variance on indicator X1 at T2 
bf05_10_t2 ~~ res2*bf05_10_t2  # This allows residual variance on indicator X2 at T2 
bf05_15_t2 ~~ res3*bf05_15_t2  # This allows residual variance on indicator X3 at T2
bf05_20_t2 ~~ res4*bf05_20_t2  # This allows residual variance on indicator X4 at T2
bf05_25_t2 ~~ res5*bf05_25_t2  # This allows residual variance on indicator X5 at T2
bf05_30_t2 ~~ res6*bf05_30_t2  # This allows residual variance on indicator X6 at T2 
bf05_35_t2 ~~ res7*bf05_35_t2  # This allows residual variance on indicator X7 at T2 
bf05_40_t2 ~~ res8*bf05_40_t2  # This allows residual variance on indicator X8 at T2
bf05_45_t2 ~~ res9*bf05_45_t2  # This allows residual variance on indicator X9 at T2
bf05_50_t2 ~~ res10*bf05_50_t2 # This allows residual variance on indicator X10 at T2
bf05_55_t2 ~~ res11*bf05_55_t2 # This allows residual variance on indicator X11 at T2
bf05_60_t2 ~~ res12*bf05_60_t2 # This allows residual variance on indicator X12 at T2

bf05_05_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_10_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_15_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_20_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_25_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_30_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_35_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_40_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_45_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_50_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_55_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_60_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_05_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_10_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_15_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_20_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_25_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_30_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_35_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_40_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_45_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_50_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_55_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_60_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_13_t1 ~~ sb07_13_t1
sb07_14_t1 ~~ sb07_14_t1
sb07_15_t1 ~~ sb07_15_t1

sb07_13_t1 ~ 1
sb07_14_t1 ~ 1
sb07_15_t1 ~ 1
'
fit_mi_lcs_openn_curr_specif_hyp4 <- lavaan(mi_lcs_openn_curr_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 23947.68 24177.74 0.824 0.074 0.093
# parameters of interest
params_lcs_openn_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_openn_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "goals ~~ d_openn_1", "goals ~~ goals", # change goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.920 NA NA
d_openn_1 =~ openn_t2 1.000 0.457 NA NA
d_openn_1 ~1 0.105 3.116 0.770 0.441
openn_t1 ~1 2.997 44.100 49.674 0.000
d_openn_1 ~~ d_openn_1 0.001 0.996 0.432 0.666
d_openn_1 ~ openn_t1 -0.033 -0.066 -0.721 0.471
goals ~~ d_openn_1 0.005 0.226 0.790 0.430
goals ~~ goals 0.416 1.000 4.597 0.000

Correlation of specific, facet-level change goals with openness change score (current-self) is not significantly different from zero, r = 0.005, p = 0.43.

3.6.1.20 Openness - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_ideal_specif_hyp4 <- '
openn_t1 =~ 1*bf06_05_t1 + lamb2*bf06_10_t1 + lamb3*bf06_15_t1 + lamb4*bf06_20_t1 + lamb5*bf06_25_t1 + lamb6*bf06_30_t1 + lamb7*bf06_35_t1 + lamb8*bf06_40_t1 + lamb9*bf06_45_t1 + lamb10*bf06_50_t1 + lamb11*bf06_55_t1 + lamb12*bf06_60_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*bf06_05_t2 + lamb2*bf06_10_t2 + lamb3*bf06_15_t2 + lamb4*bf06_20_t2 + lamb5*bf06_25_t2 + lamb6*bf06_30_t2 + lamb7*bf06_35_t2 + lamb8*bf06_40_t2 + lamb9*bf06_45_t2 + lamb10*bf06_50_t2 + lamb11*bf06_55_t2 + lamb12*bf06_60_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

goals =~ 1*sb07_13_t1 + sb07_14_t1 + sb07_15_t1 # latent change goal variable (three facets per trait)

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

bf06_05_t1 ~~ bf06_05_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_10_t1 ~~ bf06_10_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_15_t1 ~~ bf06_15_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_20_t1 ~~ bf06_20_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_25_t1 ~~ bf06_25_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_30_t1 ~~ bf06_30_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_35_t1 ~~ bf06_35_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_40_t1 ~~ bf06_40_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_45_t1 ~~ bf06_45_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_50_t1 ~~ bf06_50_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_55_t1 ~~ bf06_55_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_60_t1 ~~ bf06_60_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_05_t1 ~~ res1*bf06_05_t1   # This allows residual variance on indicator X1 at T1 
bf06_10_t1 ~~ res2*bf06_10_t1   # This allows residual variance on indicator X2 at T1
bf06_15_t1 ~~ res3*bf06_15_t1   # This allows residual variance on indicator X3 at T1
bf06_20_t1 ~~ res4*bf06_20_t1   # This allows residual variance on indicator X4 at T1
bf06_25_t1 ~~ res5*bf06_25_t1   # This allows residual variance on indicator X5 at T1
bf06_30_t1 ~~ res6*bf06_30_t1   # This allows residual variance on indicator X6 at T1 
bf06_35_t1 ~~ res7*bf06_35_t1   # This allows residual variance on indicator X7 at T1
bf06_40_t1 ~~ res8*bf06_40_t1   # This allows residual variance on indicator X8 at T1
bf06_45_t1 ~~ res9*bf06_45_t1   # This allows residual variance on indicator X9 at T1
bf06_50_t1 ~~ res10*bf06_50_t1  # This allows residual variance on indicator X10 at T1
bf06_55_t1 ~~ res11*bf06_55_t1  # This allows residual variance on indicator X11 at T1
bf06_60_t1 ~~ res12*bf06_60_t1  # This allows residual variance on indicator X12 at T1

bf06_05_t2 ~~ res1*bf06_05_t2  # This allows residual variance on indicator X1 at T2 
bf06_10_t2 ~~ res2*bf06_10_t2  # This allows residual variance on indicator X2 at T2 
bf06_15_t2 ~~ res3*bf06_15_t2  # This allows residual variance on indicator X3 at T2
bf06_20_t2 ~~ res4*bf06_20_t2  # This allows residual variance on indicator X4 at T2
bf06_25_t2 ~~ res5*bf06_25_t2  # This allows residual variance on indicator X5 at T2
bf06_30_t2 ~~ res6*bf06_30_t2  # This allows residual variance on indicator X6 at T2 
bf06_35_t2 ~~ res7*bf06_35_t2  # This allows residual variance on indicator X7 at T2 
bf06_40_t2 ~~ res8*bf06_40_t2  # This allows residual variance on indicator X8 at T2
bf06_45_t2 ~~ res9*bf06_45_t2  # This allows residual variance on indicator X9 at T2
bf06_50_t2 ~~ res10*bf06_50_t2 # This allows residual variance on indicator X10 at T2
bf06_55_t2 ~~ res11*bf06_55_t2 # This allows residual variance on indicator X11 at T2
bf06_60_t2 ~~ res12*bf06_60_t2 # This allows residual variance on indicator X12 at T2

bf06_05_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_10_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_15_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_20_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_25_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_30_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_35_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_40_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_45_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_50_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_55_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_60_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_05_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_10_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_15_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_20_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_25_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_30_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_35_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_40_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_45_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_50_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_55_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_60_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb07_13_t1 ~~ sb07_13_t1
sb07_14_t1 ~~ sb07_14_t1
sb07_15_t1 ~~ sb07_15_t1

sb07_13_t1 ~ 1
sb07_14_t1 ~ 1
sb07_15_t1 ~ 1
'
fit_mi_lcs_openn_ideal_specif_hyp4 <- lavaan(mi_lcs_openn_ideal_specif_hyp4, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 61 23059.23 23289.28 0.837 0.061 0.074
# parameters of interest
params_lcs_openn_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_openn_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "goals ~~ d_openn_1", "goals ~~ goals", # change goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.938 NA NA
d_openn_1 =~ openn_t2 1.000 0.621 NA NA
d_openn_1 ~1 0.467 8.660 1.905 0.057
openn_t1 ~1 3.120 38.330 46.546 0.000
d_openn_1 ~~ d_openn_1 0.003 0.948 0.552 0.581
d_openn_1 ~ openn_t1 -0.150 -0.227 -1.936 0.053
goals ~~ d_openn_1 0.004 0.105 0.755 0.450
goals ~~ goals 0.416 1.000 4.629 0.000

Correlation of specific, facet-level change goals with openness change score (ideal-self) is not significantly different from zero, r = 0.004, p = 0.45.

3.6.2 Big Five facets

Run models for all facets with a template & loop:

Show the code
# create template:
facet_template <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1       # This estimates the variance of facet_t1 
d_facet_1 ~ facet_t1       # This estimates the self-feedback parameter

d_facet_1 ~~ ind_goal     # estimates the covariance/correlation with change goal variable

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # loop across 2 BFI versions (combined pre&post current/ideal)
  for (j in 5:length(bfi_versions)) {
    items = paste0(bfi_versions[[j]], item_nrs)
    # loop across 2 different goal operationalizations (sb06_01_t1 & sb07_XX_t1)
    for (k in 1:2) {
      if (k==1) {
        goal_op = "sb06_01_t1"
      } else{
        goal_op = paste0("sb07_", str_pad(i-5, 2, pad = "0"), "_t1")
      }
      template_filled <- str_replace_all(facet_template, 
                                         c("facet" = short_name,
                                           "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                           "ind_goal" = goal_op))
      facet_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
      # save to environment
      if (k==1) {
        eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_hyp4")), template_filled))
        eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_hyp4")), facet_model_fit))
      } else{
        eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_specif_hyp4")), template_filled))
        eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_specif_hyp4")), facet_model_fit))
      }
    }
  }
}  
3.6.2.1 Sociability - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7793.418 7876.39 0.945 0.081 0.068
# parameters of interest
params_lcs_socia_curr_hyp4 <- broom::tidy(fit_mi_lcs_socia_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.003 NA NA
d_socia_1 =~ socia_t2 1.000 0.609 NA NA
d_socia_1 ~1 0.730 1.410 5.044 0.000
socia_t1 ~1 2.807 3.293 41.062 0.000
d_socia_1 ~~ d_socia_1 0.243 0.905 4.890 0.000
d_socia_1 ~ socia_t1 -0.187 -0.308 -3.879 0.000
d_socia_1 ~~ sb06_01_t1 0.072 0.145 1.777 0.076
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.322 0.000
sb06_01_t1 ~1 3.076 3.055 53.651 0.000

Correlation of general change goal with sociability change score (current-self) is not significantly different from zero, r = 0.072, p = 0.076.

3.6.2.2 Sociability - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7606.263 7689.235 0.964 0.047 0.053
# parameters of interest
params_lcs_socia_ideal_hyp4 <- broom::tidy(fit_mi_lcs_socia_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 0.968 NA NA
d_socia_1 =~ socia_t2 1.000 0.516 NA NA
d_socia_1 ~1 0.428 1.847 1.282 0.200
socia_t1 ~1 4.176 9.615 100.110 0.000
d_socia_1 ~~ d_socia_1 0.051 0.959 1.980 0.048
d_socia_1 ~ socia_t1 -0.108 -0.203 -1.359 0.174
d_socia_1 ~~ sb06_01_t1 0.042 0.183 1.517 0.129
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.695 0.000

Correlation of general change goal with sociability change score (ideal-self) is not significantly different from zero, r = 0.042, p = 0.129.

3.6.2.3 Sociability - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7910.786 7993.758 0.911 0.105 0.124
# parameters of interest
params_lcs_socia_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_socia_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sb07_01_t1", "sb07_01_t1 ~~ sb07_01_t1", # change goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.030 NA NA
d_socia_1 =~ socia_t2 1.000 0.644 NA NA
d_socia_1 ~1 0.831 1.572 5.238 0.00
socia_t1 ~1 2.808 3.318 41.162 0.00
d_socia_1 ~~ d_socia_1 0.244 0.871 4.918 0.00
d_socia_1 ~ socia_t1 -0.224 -0.359 -4.239 0.00
d_socia_1 ~~ sb07_01_t1 -0.051 -0.086 -1.057 0.29
sb07_01_t1 ~~ sb07_01_t1 1.470 1.000 14.206 0.00

Correlation of specific, facet-level change goals with sociability change score (current-self) is not significantly different from zero, r = -0.051, p = 0.29.

3.6.2.4 Sociability - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7719.997 7802.969 0.94 0.061 0.069
# parameters of interest
params_lcs_socia_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_socia_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sb07_01_t1", "sb07_01_t1 ~~ sb07_01_t1", # change goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 0.979 NA NA
d_socia_1 =~ socia_t2 1.000 0.533 NA NA
d_socia_1 ~1 0.503 2.150 1.495 0.135
socia_t1 ~1 4.175 9.706 100.123 0.000
d_socia_1 ~~ d_socia_1 0.052 0.946 2.044 0.041
d_socia_1 ~ socia_t1 -0.126 -0.232 -1.574 0.115
d_socia_1 ~~ sb07_01_t1 0.059 0.215 1.902 0.057
sb07_01_t1 ~~ sb07_01_t1 1.470 1.000 14.204 0.000

Correlation of specific, facet-level change goals with anxiety change score (ideal-self) is not significantly different from zero, r = 0.059, p = 0.057.

3.6.2.5 Assertiveness - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8132.925 8215.897 0.989 0.029 0.049
# parameters of interest
params_lcs_asser_curr_hyp4 <- broom::tidy(fit_mi_lcs_asser_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 0.972 NA NA
d_asser_1 =~ asser_t2 1.000 0.363 NA NA
d_asser_1 ~1 0.185 0.858 1.055 0.292
asser_t1 ~1 3.046 5.276 54.971 0.000
d_asser_1 ~~ d_asser_1 0.046 0.988 1.940 0.052
d_asser_1 ~ asser_t1 -0.041 -0.109 -0.700 0.484
d_asser_1 ~~ sb06_01_t1 0.009 0.042 0.298 0.766
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.075 3.053 53.695 0.000

Correlation of general change goal with assertiveness change score (current-self) is not significantly different from zero, r = 0.009, p = 0.766.

3.6.2.6 Assertiveness - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8012.838 8095.81 0.996 0.013 0.041
# parameters of interest
params_lcs_asser_ideal_hyp4 <- broom::tidy(fit_mi_lcs_asser_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 0.934 NA NA
d_asser_1 =~ asser_t2 1.000 0.582 NA NA
d_asser_1 ~1 0.451 2.297 1.248 0.212
asser_t1 ~1 4.044 12.842 85.379 0.000
d_asser_1 ~~ d_asser_1 0.037 0.962 2.053 0.040
d_asser_1 ~ asser_t1 -0.121 -0.194 -1.372 0.170
d_asser_1 ~~ sb06_01_t1 0.038 0.198 1.913 0.056
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.321 0.000
sb06_01_t1 ~1 3.075 3.053 53.685 0.000

Correlation of general change goal with assertiveness change score (ideal-self) is not significantly different from zero, r = 0.038, p = 0.056.

3.6.2.7 Assertiveness - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8238.273 8321.245 0.948 0.065 0.081
# parameters of interest
params_lcs_asser_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_asser_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sb07_02_t1", "sb07_02_t1 ~~ sb07_02_t1", # change goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 0.971 NA NA
d_asser_1 =~ asser_t2 1.000 0.362 NA NA
d_asser_1 ~1 0.181 0.841 1.003 0.316
asser_t1 ~1 3.046 5.270 54.953 0.000
d_asser_1 ~~ d_asser_1 0.046 0.989 1.934 0.053
d_asser_1 ~ asser_t1 -0.039 -0.106 -0.653 0.514
d_asser_1 ~~ sb07_02_t1 0.008 0.030 0.221 0.825
sb07_02_t1 ~~ sb07_02_t1 1.425 1.000 15.102 0.000

Correlation of specific, facet-level change goals with assertiveness change score (current-self) is not significantly different from zero, r = 0.008, p = 0.825.

3.6.2.8 Assertiveness - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8122.198 8205.17 0.967 0.037 0.062
# parameters of interest
params_lcs_asser_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_asser_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sb07_02_t1", "sb07_02_t1 ~~ sb07_02_t1", # change goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 0.930 NA NA
d_asser_1 =~ asser_t2 1.000 0.575 NA NA
d_asser_1 ~1 0.418 2.125 1.128 0.259
asser_t1 ~1 4.044 12.715 85.476 0.000
d_asser_1 ~~ d_asser_1 0.037 0.967 2.024 0.043
d_asser_1 ~ asser_t1 -0.113 -0.182 -1.250 0.211
d_asser_1 ~~ sb07_02_t1 0.011 0.047 0.478 0.633
sb07_02_t1 ~~ sb07_02_t1 1.425 1.000 15.101 0.000

Correlation of specific, facet-level change goals with assertiveness change score (ideal-self) is not significantly different from zero, r = 0.011, p = 0.633.

3.6.2.9 Energy - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8092.406 8175.377 0.935 0.075 0.079
# parameters of interest
params_lcs_energ_curr_hyp4 <- broom::tidy(fit_mi_lcs_energ_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 0.982 NA NA
d_energ_1 =~ energ_t2 1.000 0.545 NA NA
d_energ_1 ~1 0.267 1.171 1.807 0.071
energ_t1 ~1 2.686 6.536 49.386 0.000
d_energ_1 ~~ d_energ_1 0.049 0.940 2.579 0.010
d_energ_1 ~ energ_t1 -0.136 -0.244 -2.485 0.013
d_energ_1 ~~ sb06_01_t1 -0.014 -0.063 -0.676 0.499
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.075 3.054 53.640 0.000

Correlation of general change goal with energy change score (current-self) is not significantly different from zero, r = -0.014, p = 0.499.

3.6.2.10 Energy - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7613.174 7696.146 0.935 0.052 0.055
# parameters of interest
params_lcs_energ_ideal_hyp4 <- broom::tidy(fit_mi_lcs_energ_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 0.917 NA NA
d_energ_1 =~ energ_t2 1.000 0.668 NA NA
d_energ_1 ~1 0.411 1.612 1.612 0.107
energ_t1 ~1 2.248 6.419 39.569 0.000
d_energ_1 ~~ d_energ_1 0.061 0.945 2.117 0.034
d_energ_1 ~ energ_t1 -0.170 -0.234 -1.453 0.146
d_energ_1 ~~ sb06_01_t1 -0.024 -0.095 -0.947 0.343
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.075 3.054 53.658 0.000

Correlation of general change goal with energy change score (ideal-self) is not significantly different from zero, r = -0.024, p = 0.343.

3.6.2.11 Energy - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8232.149 8315.12 0.897 0.097 0.102
# parameters of interest
params_lcs_energ_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_energ_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sb07_03_t1", "sb07_03_t1 ~~ sb07_03_t1", # change goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.003 NA NA
d_energ_1 =~ energ_t2 1.000 0.572 NA NA
d_energ_1 ~1 0.348 1.490 2.212 0.027
energ_t1 ~1 2.686 6.560 49.352 0.000
d_energ_1 ~~ d_energ_1 0.050 0.916 2.583 0.010
d_energ_1 ~ energ_t1 -0.166 -0.291 -2.852 0.004
d_energ_1 ~~ sb07_03_t1 0.024 0.084 0.979 0.327
sb07_03_t1 ~~ sb07_03_t1 1.596 1.000 14.173 0.000

Correlation of specific, facet-level change goals with energy change score (current-self) is not significantly different from zero, r = 0.024, p = 0.327.

3.6.2.12 Energy - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7753.514 7836.486 0.939 0.051 0.06
# parameters of interest
params_lcs_energ_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_energ_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sb07_03_t1", "sb07_03_t1 ~~ sb07_03_t1", # change goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 0.908 NA NA
d_energ_1 =~ energ_t2 1.000 0.651 NA NA
d_energ_1 ~1 0.367 1.473 1.414 0.157
energ_t1 ~1 2.248 6.465 39.580 0.000
d_energ_1 ~~ d_energ_1 0.059 0.956 2.102 0.036
d_energ_1 ~ energ_t1 -0.151 -0.210 -1.264 0.206
d_energ_1 ~~ sb07_03_t1 0.026 0.086 0.799 0.424
sb07_03_t1 ~~ sb07_03_t1 1.595 1.000 14.173 0.000

Correlation of specific, facet-level change goals with energy change score (ideal-self) is not significantly different from zero, r = 0.026, p = 0.424.

3.6.2.13 Compassion - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7855.851 7938.822 0.983 0.031 0.042
# parameters of interest
params_lcs_compa_curr_hyp4 <- broom::tidy(fit_mi_lcs_compa_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.156 NA NA
d_compa_1 =~ compa_t2 1.000 0.386 NA NA
d_compa_1 ~1 0.855 3.701 3.187 0.001
compa_t1 ~1 4.170 6.025 85.521 0.000
d_compa_1 ~~ d_compa_1 0.038 0.705 1.146 0.252
d_compa_1 ~ compa_t1 -0.182 -0.544 -2.943 0.003
d_compa_1 ~~ sb06_01_t1 0.023 0.120 0.893 0.372
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.075 3.054 53.658 0.000

Correlation of general change goal with compassion change score (current-self) is not significantly different from zero, r = 0.023, p = 0.372.

3.6.2.14 Compassion - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8134.335 8217.306 0.978 0.031 0.046
# parameters of interest
params_lcs_compa_ideal_hyp4 <- broom::tidy(fit_mi_lcs_compa_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.060 NA NA
d_compa_1 =~ compa_t2 1.000 0.651 NA NA
d_compa_1 ~1 1.025 2.479 2.404 0.016
compa_t1 ~1 4.196 6.228 82.376 0.000
d_compa_1 ~~ d_compa_1 0.144 0.842 3.039 0.002
d_compa_1 ~ compa_t1 -0.244 -0.397 -2.517 0.012
d_compa_1 ~~ sb06_01_t1 0.016 0.042 0.365 0.715
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.075 3.054 53.644 0.000

Correlation of general change goal with compassion change score (ideal-self) is not significantly different from zero, r = 0.016, p = 0.715.

3.6.2.15 Compassion - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8057.767 8140.738 0.962 0.047 0.064
# parameters of interest
params_lcs_compa_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_compa_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sb07_04_t1", "sb07_04_t1 ~~ sb07_04_t1", # change goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.157 NA NA
d_compa_1 =~ compa_t2 1.000 0.386 NA NA
d_compa_1 ~1 0.858 3.742 3.173 0.002
compa_t1 ~1 4.170 6.066 85.607 0.000
d_compa_1 ~~ d_compa_1 0.037 0.701 1.136 0.256
d_compa_1 ~ compa_t1 -0.182 -0.547 -2.918 0.004
d_compa_1 ~~ sb07_04_t1 -0.013 -0.049 -0.297 0.767
sb07_04_t1 ~~ sb07_04_t1 1.946 1.000 19.135 0.000

Correlation of specific, facet-level change goals with compassion change score (current-self) is not significantly different from zero, r = -0.013, p = 0.767.

3.6.2.16 Compassion - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8334.824 8417.795 0.976 0.032 0.049
# parameters of interest
params_lcs_compa_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_compa_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sb07_04_t1", "sb07_04_t1 ~~ sb07_04_t1", # change goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.065 NA NA
d_compa_1 =~ compa_t2 1.000 0.659 NA NA
d_compa_1 ~1 1.055 2.517 2.542 0.011
compa_t1 ~1 4.196 6.200 82.313 0.000
d_compa_1 ~~ d_compa_1 0.147 0.836 3.112 0.002
d_compa_1 ~ compa_t1 -0.251 -0.405 -2.660 0.008
d_compa_1 ~~ sb07_04_t1 -0.054 -0.101 -0.890 0.373
sb07_04_t1 ~~ sb07_04_t1 1.946 1.000 19.136 0.000

Correlation of specific, facet-level change goals with compassion change score (ideal-self) is not significantly different from zero, r = -0.054, p = 0.373.

3.6.2.17 Respectfulness - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7156.34 7239.311 0.95 0.065 0.056
# parameters of interest
params_lcs_respe_curr_hyp4 <- broom::tidy(fit_mi_lcs_respe_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.100 NA NA
d_respe_1 =~ respe_t2 1.000 0.622 NA NA
d_respe_1 ~1 1.149 3.467 4.375 0.000
respe_t1 ~1 4.396 7.504 104.875 0.000
d_respe_1 ~~ d_respe_1 0.089 0.810 4.184 0.000
d_respe_1 ~ respe_t1 -0.247 -0.436 -4.321 0.000
d_respe_1 ~~ sb06_01_t1 -0.037 -0.125 -1.401 0.161
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.324 0.000
sb06_01_t1 ~1 3.074 3.053 53.667 0.000

Correlation of general change goal with respectfulness change score (current-self) is not significantly different from zero, r = -0.037, p = 0.161.

3.6.2.18 Respectfulness - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 6662.251 6745.223 0.936 0.065 0.061
# parameters of interest
params_lcs_respe_ideal_hyp4 <- broom::tidy(fit_mi_lcs_respe_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.147 NA NA
d_respe_1 =~ respe_t2 1.000 0.709 NA NA
d_respe_1 ~1 1.462 4.907 3.508 0.000
respe_t1 ~1 4.597 9.547 118.886 0.000
d_respe_1 ~~ d_respe_1 0.066 0.747 2.463 0.014
d_respe_1 ~ respe_t1 -0.311 -0.503 -3.533 0.000
d_respe_1 ~~ sb06_01_t1 -0.007 -0.027 -0.284 0.776
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.671 0.000

Correlation of general change goal with respectfulness change score (ideal-self) is not significantly different from zero, r = -0.007, p = 0.776.

3.6.2.19 Respectfulness - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7334.492 7417.463 0.9 0.094 0.106
# parameters of interest
params_lcs_respe_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_respe_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sb07_05_t1", "sb07_05_t1 ~~ sb07_05_t1", # change goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.090 NA NA
d_respe_1 =~ respe_t2 1.000 0.606 NA NA
d_respe_1 ~1 1.092 3.353 4.045 0.000
respe_t1 ~1 4.395 7.513 104.871 0.000
d_respe_1 ~~ d_respe_1 0.087 0.824 4.146 0.000
d_respe_1 ~ respe_t1 -0.234 -0.420 -3.931 0.000
d_respe_1 ~~ sb07_05_t1 0.019 0.048 0.462 0.644
sb07_05_t1 ~~ sb07_05_t1 1.794 1.000 15.977 0.000

Correlation of specific, facet-level change goals with respectfulness change score (current-self) is not significantly different from zero, r = 0.019, p = 0.644.

3.6.2.20 Respectfulness - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 6833.329 6916.3 0.935 0.065 0.062
# parameters of interest
params_lcs_respe_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_respe_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sb07_05_t1", "sb07_05_t1 ~~ sb07_05_t1", # change goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.156 NA NA
d_respe_1 =~ respe_t2 1.000 0.728 NA NA
d_respe_1 ~1 1.523 5.035 3.678 0.000
respe_t1 ~1 4.597 9.567 118.931 0.000
d_respe_1 ~~ d_respe_1 0.067 0.735 2.480 0.013
d_respe_1 ~ respe_t1 -0.324 -0.515 -3.703 0.000
d_respe_1 ~~ sb07_05_t1 -0.071 -0.203 -2.027 0.043
sb07_05_t1 ~~ sb07_05_t1 1.794 1.000 15.978 0.000

The correlation of specific, facet-level change goals with the respectfulness change score (ideal-self) is significantly different from zero, r = -0.071, p = 0.043.

3.6.2.21 Trust - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8201.853 8284.825 0.948 0.061 0.049
# parameters of interest
params_lcs_trust_curr_hyp4 <- broom::tidy(fit_mi_lcs_trust_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.027 NA NA
d_trust_1 =~ trust_t2 1.000 0.608 NA NA
d_trust_1 ~1 0.453 1.273 2.279 0.023
trust_t1 ~1 2.888 4.801 46.850 0.000
d_trust_1 ~~ d_trust_1 0.112 0.884 2.651 0.008
d_trust_1 ~ trust_t1 -0.201 -0.340 -2.860 0.004
d_trust_1 ~~ sb06_01_t1 -0.030 -0.088 -0.933 0.351
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.324 0.000
sb06_01_t1 ~1 3.075 3.054 53.720 0.000

Correlation of general change goal with trust change score (current-self) is not significantly different from zero, r = -0.03, p = 0.351.

3.6.2.22 Trust - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7732.856 7815.827 0.955 0.051 0.05
# parameters of interest
params_lcs_trust_ideal_hyp4 <- broom::tidy(fit_mi_lcs_trust_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 0.986 NA NA
d_trust_1 =~ trust_t2 1.000 0.564 NA NA
d_trust_1 ~1 0.267 1.198 1.774 0.076
trust_t1 ~1 1.960 5.027 41.560 0.000
d_trust_1 ~~ d_trust_1 0.046 0.932 2.337 0.019
d_trust_1 ~ trust_t1 -0.149 -0.261 -1.858 0.063
d_trust_1 ~~ sb06_01_t1 0.003 0.012 0.121 0.904
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.682 0.000

Correlation of general change goal with trust change score (ideal-self) is not significantly different from zero, r = 0.003, p = 0.904.

3.6.2.23 Trust - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8383.487 8466.459 0.938 0.067 0.058
# parameters of interest
params_lcs_trust_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_trust_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sb07_06_t1", "sb07_06_t1 ~~ sb07_06_t1", # change goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.026 NA NA
d_trust_1 =~ trust_t2 1.000 0.604 NA NA
d_trust_1 ~1 0.442 1.241 2.233 0.026
trust_t1 ~1 2.888 4.770 46.906 0.000
d_trust_1 ~~ d_trust_1 0.113 0.887 2.640 0.008
d_trust_1 ~ trust_t1 -0.198 -0.337 -2.832 0.005
d_trust_1 ~~ sb07_06_t1 -0.031 -0.068 -0.697 0.486
sb07_06_t1 ~~ sb07_06_t1 1.823 1.000 19.816 0.000

Correlation of specific, facet-level change goals with trust change score (current-self) is not significantly different from zero, r = -0.031, p = 0.486.

3.6.2.24 Trust - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7913.648 7996.62 0.946 0.055 0.05
# parameters of interest
params_lcs_trust_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_trust_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sb07_06_t1", "sb07_06_t1 ~~ sb07_06_t1", # change goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 0.983 NA NA
d_trust_1 =~ trust_t2 1.000 0.561 NA NA
d_trust_1 ~1 0.260 1.175 1.709 0.088
trust_t1 ~1 1.960 5.045 41.563 0.000
d_trust_1 ~~ d_trust_1 0.046 0.935 2.317 0.020
d_trust_1 ~ trust_t1 -0.146 -0.255 -1.788 0.074
d_trust_1 ~~ sb07_06_t1 0.019 0.067 0.645 0.519
sb07_06_t1 ~~ sb07_06_t1 1.823 1.000 19.808 0.000

Correlation of specific, facet-level change goals with trust change score (ideal-self) is not significantly different from zero, r = 0.019, p = 0.519.

3.6.2.25 Organization - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7755.37 7838.341 0.982 0.049 0.048
# parameters of interest
params_lcs_organ_curr_hyp4 <- broom::tidy(fit_mi_lcs_organ_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.070 NA NA
d_organ_1 =~ organ_t2 1.000 0.520 NA NA
d_organ_1 ~1 0.360 0.696 3.508 0.0
organ_t1 ~1 2.815 2.651 37.639 0.0
d_organ_1 ~~ d_organ_1 0.230 0.861 4.452 0.0
d_organ_1 ~ organ_t1 -0.181 -0.373 -4.731 0.0
d_organ_1 ~~ sb06_01_t1 -0.069 -0.143 -1.645 0.1
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.319 0.0
sb06_01_t1 ~1 3.074 3.053 53.672 0.0

Correlation of general change goal with organization change score (current-self) is not significantly different from zero, r = -0.069, p = 0.1.

3.6.2.26 Organization - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 6795.417 6878.388 0.945 0.048 0.054
# parameters of interest
params_lcs_organ_ideal_hyp4 <- broom::tidy(fit_mi_lcs_organ_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.054 NA NA
d_organ_1 =~ organ_t2 1.000 0.810 NA NA
d_organ_1 ~1 0.545 1.588 3.984 0.000
organ_t1 ~1 1.672 3.742 32.841 0.000
d_organ_1 ~~ d_organ_1 0.094 0.798 3.280 0.001
d_organ_1 ~ organ_t1 -0.345 -0.449 -4.043 0.000
d_organ_1 ~~ sb06_01_t1 -0.017 -0.056 -0.589 0.556
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.669 0.000

Correlation of general change goal with organization change score (ideal-self) is not significantly different from zero, r = -0.017, p = 0.556.

3.6.2.27 Organization - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7994.803 8077.775 0.88 0.133 0.156
# parameters of interest
params_lcs_organ_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_organ_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sb07_07_t1", "sb07_07_t1 ~~ sb07_07_t1", # change goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.098 NA NA
d_organ_1 =~ organ_t2 1.000 0.555 NA NA
d_organ_1 ~1 0.449 0.838 3.354 0.001
organ_t1 ~1 2.815 2.654 37.635 0.000
d_organ_1 ~~ d_organ_1 0.236 0.822 4.505 0.000
d_organ_1 ~ organ_t1 -0.213 -0.422 -4.303 0.000
d_organ_1 ~~ sb07_07_t1 0.063 0.088 0.883 0.377
sb07_07_t1 ~~ sb07_07_t1 2.185 1.000 19.882 0.000

Correlation of specific, facet-level change goals with organization change score (current-self) is not significantly different from zero, r = 0.063, p = 0.377.

3.6.2.28 Organization - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7030.517 7113.489 0.957 0.042 0.052
# parameters of interest
params_lcs_organ_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_organ_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sb07_07_t1", "sb07_07_t1 ~~ sb07_07_t1", # change goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.051 NA NA
d_organ_1 =~ organ_t2 1.000 0.810 NA NA
d_organ_1 ~1 0.545 1.601 4.015 0.000
organ_t1 ~1 1.672 3.786 32.887 0.000
d_organ_1 ~~ d_organ_1 0.093 0.800 3.270 0.001
d_organ_1 ~ organ_t1 -0.345 -0.447 -4.067 0.000
d_organ_1 ~~ sb07_07_t1 0.059 0.132 1.482 0.138
sb07_07_t1 ~~ sb07_07_t1 2.184 1.000 19.891 0.000

Correlation of specific, facet-level change goals with organization change score (ideal-self) is not significantly different from zero, r = 0.059, p = 0.138.

3.6.2.29 Productiveness - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7715.296 7798.268 0.958 0.067 0.067
# parameters of interest
params_lcs_produ_curr_hyp4 <- broom::tidy(fit_mi_lcs_produ_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.040 NA NA
d_produ_1 =~ produ_t2 1.000 0.494 NA NA
d_produ_1 ~1 0.327 0.890 1.937 0.053
produ_t1 ~1 3.338 4.311 50.369 0.000
d_produ_1 ~~ d_produ_1 0.122 0.900 3.901 0.000
d_produ_1 ~ produ_t1 -0.150 -0.316 -2.934 0.003
d_produ_1 ~~ sb06_01_t1 0.005 0.015 0.183 0.855
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.669 0.000

Correlation of general change goal with productiveness change score (current-self) is not significantly different from zero, r = 0.005, p = 0.855.

3.6.2.30 Productiveness - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 6383.146 6466.118 0.946 0.054 0.049
# parameters of interest
params_lcs_produ_ideal_hyp4 <- broom::tidy(fit_mi_lcs_produ_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.135 NA NA
d_produ_1 =~ produ_t2 1.000 0.816 NA NA
d_produ_1 ~1 0.597 1.956 4.513 0.000
produ_t1 ~1 1.636 3.856 37.485 0.000
d_produ_1 ~~ d_produ_1 0.068 0.735 2.184 0.029
d_produ_1 ~ produ_t1 -0.371 -0.515 -4.419 0.000
d_produ_1 ~~ sb06_01_t1 0.013 0.049 0.506 0.613
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.322 0.000
sb06_01_t1 ~1 3.075 3.053 53.681 0.000

Correlation of general change goal with productiveness change score (ideal-self) is not significantly different from zero, r = 0.013, p = 0.613.

3.6.2.31 Productiveness - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7877.08 7960.052 0.912 0.099 0.127
# parameters of interest
params_lcs_produ_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_produ_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sb07_08_t1", "sb07_08_t1 ~~ sb07_08_t1", # change goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.048 NA NA
d_produ_1 =~ produ_t2 1.000 0.504 NA NA
d_produ_1 ~1 0.361 0.971 1.946 0.052
produ_t1 ~1 3.338 4.319 50.353 0.000
d_produ_1 ~~ d_produ_1 0.123 0.889 3.986 0.000
d_produ_1 ~ produ_t1 -0.160 -0.333 -2.854 0.004
d_produ_1 ~~ sb07_08_t1 0.023 0.050 0.527 0.598
sb07_08_t1 ~~ sb07_08_t1 1.713 1.000 13.051 0.000

Correlation of specific, facet-level change goals with productiveness change score (current-self) is not significantly different from zero, r = 0.023, p = 0.598.

3.6.2.32 Productiveness - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 6544.725 6627.697 0.955 0.049 0.049
# parameters of interest
params_lcs_produ_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_produ_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sb07_08_t1", "sb07_08_t1 ~~ sb07_08_t1", # change goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.133 NA NA
d_produ_1 =~ produ_t2 1.000 0.812 NA NA
d_produ_1 ~1 0.592 1.945 4.566 0.000
produ_t1 ~1 1.636 3.856 37.507 0.000
d_produ_1 ~~ d_produ_1 0.068 0.738 2.181 0.029
d_produ_1 ~ produ_t1 -0.367 -0.512 -4.473 0.000
d_produ_1 ~~ sb07_08_t1 0.025 0.074 0.883 0.377
sb07_08_t1 ~~ sb07_08_t1 1.713 1.000 13.048 0.000

Correlation of specific, facet-level change goals with productiveness change score (ideal-self) is not significantly different from zero, r = 0.025, p = 0.377.

3.6.2.33 Responsibility - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7760.222 7843.193 0.918 0.084 0.084
# parameters of interest
params_lcs_respo_curr_hyp4 <- broom::tidy(fit_mi_lcs_respo_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.001 NA NA
d_respo_1 =~ respo_t2 1.000 0.447 NA NA
d_respo_1 ~1 0.414 1.982 2.196 0.028
respo_t1 ~1 3.632 7.763 69.937 0.000
d_respo_1 ~~ d_respo_1 0.041 0.949 2.224 0.026
d_respo_1 ~ respo_t1 -0.101 -0.226 -1.993 0.046
d_respo_1 ~~ sb06_01_t1 -0.044 -0.214 -1.927 0.054
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.076 3.055 53.727 0.000

Correlation of general change goal with responsibility change score (current-self) is not significantly different from zero, r = -0.044, p = 0.054.

3.6.2.34 Responsibility - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7200.907 7283.879 0.977 0.035 0.044
# parameters of interest
params_lcs_respo_ideal_hyp4 <- broom::tidy(fit_mi_lcs_respo_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 0.923 NA NA
d_respo_1 =~ respo_t2 1.000 0.525 NA NA
d_respo_1 ~1 0.279 1.038 0.732 0.464
respo_t1 ~1 4.248 8.990 76.678 0.000
d_respo_1 ~~ d_respo_1 0.071 0.983 2.699 0.007
d_respo_1 ~ respo_t1 -0.074 -0.131 -0.859 0.390
d_respo_1 ~~ sb06_01_t1 0.003 0.010 0.097 0.923
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.663 0.000

Correlation of general change goal with responsibility change score (ideal-self) is not significantly different from zero, r = 0.003, p = 0.923.

3.6.2.35 Responsibility - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8006.864 8089.835 0.873 0.107 0.12
# parameters of interest
params_lcs_respo_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_respo_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sb07_09_t1", "sb07_09_t1 ~~ sb07_09_t1", # change goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.014 NA NA
d_respo_1 =~ respo_t2 1.000 0.463 NA NA
d_respo_1 ~1 0.477 2.224 2.416 0.016
respo_t1 ~1 3.632 7.745 69.921 0.000
d_respo_1 ~~ d_respo_1 0.043 0.933 2.262 0.024
d_respo_1 ~ respo_t1 -0.118 -0.258 -2.219 0.026
d_respo_1 ~~ sb07_09_t1 -0.045 -0.145 -1.281 0.200
sb07_09_t1 ~~ sb07_09_t1 2.233 1.000 23.138 0.000

Correlation of specific, facet-level change goals with responsibility change score (current-self) is not significantly different from zero, r = -0.045, p = 0.2.

3.6.2.36 Responsibility - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7444.761 7527.733 0.992 0.02 0.041
# parameters of interest
params_lcs_respo_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_respo_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sb07_09_t1", "sb07_09_t1 ~~ sb07_09_t1", # change goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 0.923 NA NA
d_respo_1 =~ respo_t2 1.000 0.526 NA NA
d_respo_1 ~1 0.284 1.057 0.743 0.457
respo_t1 ~1 4.248 9.019 76.685 0.000
d_respo_1 ~~ d_respo_1 0.071 0.982 2.712 0.007
d_respo_1 ~ respo_t1 -0.075 -0.132 -0.869 0.385
d_respo_1 ~~ sb07_09_t1 -0.016 -0.039 -0.361 0.718
sb07_09_t1 ~~ sb07_09_t1 2.233 1.000 23.137 0.000

Correlation of specific, facet-level change goals with responsibility change score (ideal-self) is not significantly different from zero, r = -0.016, p = 0.718.

3.6.2.37 Anxiety - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8120.801 8203.773 0.958 0.059 0.07
# parameters of interest
params_lcs_anxie_curr_hyp4 <- broom::tidy(fit_mi_lcs_anxie_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.061 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.641 NA NA
d_anxie_1 ~1 0.890 1.599 5.341 0.000
anxie_t1 ~1 2.787 3.023 40.595 0.000
d_anxie_1 ~~ d_anxie_1 0.261 0.844 3.600 0.000
d_anxie_1 ~ anxie_t1 -0.238 -0.395 -4.136 0.000
d_anxie_1 ~~ sb06_01_t1 0.053 0.103 1.330 0.184
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.322 0.000
sb06_01_t1 ~1 3.075 3.054 53.709 0.000

Correlation of general change goal with anxiety change score (current-self) is not significantly different from zero, r = 0.053, p = 0.184.

3.6.2.38 Anxiety - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7856.947 7939.919 0.993 0.015 0.051
# parameters of interest
params_lcs_anxie_ideal_hyp4 <- broom::tidy(fit_mi_lcs_anxie_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.209 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.769 NA NA
d_anxie_1 ~1 1.671 9.335 3.556 0.000
anxie_t1 ~1 4.542 16.143 123.680 0.000
d_anxie_1 ~~ d_anxie_1 0.022 0.680 1.748 0.080
d_anxie_1 ~ anxie_t1 -0.360 -0.566 -3.538 0.000
d_anxie_1 ~~ sb06_01_t1 0.009 0.064 0.575 0.566
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.322 0.000
sb06_01_t1 ~1 3.074 3.053 53.676 0.000

Correlation of general change goal with anxiety change score (ideal-self) is not significantly different from zero, r = 0.009, p = 0.566.

3.6.2.39 Anxiety - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8372.023 8454.995 0.864 0.113 0.138
# parameters of interest
params_lcs_anxie_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_anxie_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sb07_10_t1", "sb07_10_t1 ~~ sb07_10_t1", # change goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.145 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.768 NA NA
d_anxie_1 ~1 1.183 1.911 5.982 0.000
anxie_t1 ~1 2.787 3.021 40.651 0.000
d_anxie_1 ~~ d_anxie_1 0.283 0.738 3.822 0.000
d_anxie_1 ~ anxie_t1 -0.344 -0.512 -4.922 0.000
d_anxie_1 ~~ sb07_10_t1 -0.219 -0.269 -2.731 0.006
sb07_10_t1 ~~ sb07_10_t1 2.341 1.000 18.984 0.000

The correlation of specific, facet-level change goals with the anxiety change score (current-self) is significantly different from zero, r = -0.219, p = 0.006.

3.6.2.40 Anxiety - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8115.175 8198.147 0.977 0.027 0.051
# parameters of interest
params_lcs_anxie_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_anxie_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sb07_10_t1", "sb07_10_t1 ~~ sb07_10_t1", # change goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.202 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.758 NA NA
d_anxie_1 ~1 1.637 9.202 3.546 0.000
anxie_t1 ~1 4.542 16.092 123.639 0.000
d_anxie_1 ~~ d_anxie_1 0.022 0.687 1.738 0.082
d_anxie_1 ~ anxie_t1 -0.353 -0.559 -3.528 0.000
d_anxie_1 ~~ sb07_10_t1 0.019 0.085 0.858 0.391
sb07_10_t1 ~~ sb07_10_t1 2.341 1.000 18.991 0.000

Correlation of specific, facet-level change goals with anxiety change score (ideal-self) is not significantly different from zero, r = 0.019, p = 0.391.

3.6.2.41 Depression - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7960.034 8043.005 0.926 0.102 0.108
# parameters of interest
params_lcs_depre_curr_hyp4 <- broom::tidy(fit_mi_lcs_depre_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 0.949 NA NA
d_depre_1 =~ depre_t2 1.000 0.533 NA NA
d_depre_1 ~1 0.463 1.247 3.686 0.000
depre_t1 ~1 2.952 4.457 46.543 0.000
d_depre_1 ~~ d_depre_1 0.134 0.967 4.422 0.000
d_depre_1 ~ depre_t1 -0.102 -0.183 -2.441 0.015
d_depre_1 ~~ sb06_01_t1 0.018 0.048 0.665 0.506
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.075 3.054 53.698 0.000

Correlation of general change goal with depression change score (current-self) is not significantly different from zero, r = 0.018, p = 0.506.

3.6.2.42 Depression - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 6463.19 6546.162 0.892 0.076 0.071
# parameters of interest
params_lcs_depre_ideal_hyp4 <- broom::tidy(fit_mi_lcs_depre_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 0.944 NA NA
d_depre_1 =~ depre_t2 1.000 0.795 NA NA
d_depre_1 ~1 1.297 3.978 2.438 0.015
depre_t1 ~1 4.403 11.372 112.255 0.000
d_depre_1 ~~ d_depre_1 0.093 0.879 3.363 0.001
d_depre_1 ~ depre_t1 -0.293 -0.348 -2.484 0.013
d_depre_1 ~~ sb06_01_t1 0.033 0.108 1.174 0.240
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.305 0.000
sb06_01_t1 ~1 3.074 3.053 53.676 0.000

Correlation of general change goal with depression change score (ideal-self) is not significantly different from zero, r = 0.033, p = 0.24.

3.6.2.43 Depression - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8234.334 8317.306 0.845 0.155 0.177
# parameters of interest
params_lcs_depre_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_depre_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sb07_11_t1", "sb07_11_t1 ~~ sb07_11_t1", # change goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.037 NA NA
d_depre_1 =~ depre_t2 1.000 0.649 NA NA
d_depre_1 ~1 0.843 2.038 4.525 0.000
depre_t1 ~1 2.952 4.469 46.550 0.000
d_depre_1 ~~ d_depre_1 0.148 0.864 4.527 0.000
d_depre_1 ~ depre_t1 -0.231 -0.369 -3.608 0.000
d_depre_1 ~~ sb07_11_t1 -0.181 -0.295 -2.709 0.007
sb07_11_t1 ~~ sb07_11_t1 2.540 1.000 23.817 0.000

Correlation of specific, facet-level change goals with depression change score (current-self) is not significantly different from zero, r = -0.181, p = 0.007.

3.6.2.44 Depression - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 6746.232 6829.204 0.904 0.072 0.065
# parameters of interest
params_lcs_depre_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_depre_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sb07_11_t1", "sb07_11_t1 ~~ sb07_11_t1", # change goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 0.939 NA NA
d_depre_1 =~ depre_t2 1.000 0.783 NA NA
d_depre_1 ~1 1.241 3.822 2.398 0.016
depre_t1 ~1 4.403 11.313 112.200 0.000
d_depre_1 ~~ d_depre_1 0.094 0.887 3.381 0.001
d_depre_1 ~ depre_t1 -0.281 -0.336 -2.445 0.014
d_depre_1 ~~ sb07_11_t1 -0.059 -0.120 -1.563 0.118
sb07_11_t1 ~~ sb07_11_t1 2.539 1.000 23.790 0.000

The correlation of specific, facet-level change goals with the depression change score (ideal-self) is significantly different from zero, r = -0.059, p = 0.118.

3.6.2.45 Volatility - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8122.585 8205.557 0.981 0.046 0.062
# parameters of interest
params_lcs_volat_curr_hyp4 <- broom::tidy(fit_mi_lcs_volat_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.075 NA NA
d_volat_1 =~ volat_t2 1.000 0.608 NA NA
d_volat_1 ~1 0.529 1.046 4.004 0.000
volat_t1 ~1 3.238 3.621 47.888 0.000
d_volat_1 ~~ d_volat_1 0.214 0.839 5.335 0.000
d_volat_1 ~ volat_t1 -0.227 -0.402 -5.747 0.000
d_volat_1 ~~ sb06_01_t1 0.016 0.035 0.413 0.679
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.724 0.000

Correlation of general change goal with volatility change score (current-self) is not significantly different from zero, r = 0.016, p = 0.679.

3.6.2.46 Volatility - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7273.627 7356.599 0.901 0.069 0.067
# parameters of interest
params_lcs_volat_ideal_hyp4 <- broom::tidy(fit_mi_lcs_volat_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 0.961 NA NA
d_volat_1 =~ volat_t2 1.000 0.589 NA NA
d_volat_1 ~1 0.241 0.790 1.760 0.078
volat_t1 ~1 1.702 3.417 37.038 0.000
d_volat_1 ~~ d_volat_1 0.088 0.943 3.047 0.002
d_volat_1 ~ volat_t1 -0.146 -0.239 -1.698 0.090
d_volat_1 ~~ sb06_01_t1 -0.044 -0.146 -1.397 0.162
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.075 3.054 53.683 0.000

Correlation of general change goal with volatility change score (ideal-self) is not significantly different from zero, r = -0.044, p = 0.162.

3.6.2.47 Volatility - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8284.498 8367.47 0.959 0.069 0.094
# parameters of interest
params_lcs_volat_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_volat_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sb07_12_t1", "sb07_12_t1 ~~ sb07_12_t1", # change goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.069 NA NA
d_volat_1 =~ volat_t2 1.000 0.600 NA NA
d_volat_1 ~1 0.507 1.009 3.631 0.000
volat_t1 ~1 3.238 3.621 47.889 0.000
d_volat_1 ~~ d_volat_1 0.213 0.846 5.254 0.000
d_volat_1 ~ volat_t1 -0.220 -0.392 -5.225 0.000
d_volat_1 ~~ sb07_12_t1 -0.009 -0.016 -0.173 0.863
sb07_12_t1 ~~ sb07_12_t1 1.711 1.000 17.440 0.000

Correlation of specific, facet-level change goals with volatility change score (current-self) is not significantly different from zero, r = -0.009, p = 0.863.

3.6.2.48 Volatility - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7437.301 7520.273 0.888 0.073 0.069
# parameters of interest
params_lcs_volat_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_volat_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sb07_12_t1", "sb07_12_t1 ~~ sb07_12_t1", # change goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 0.953 NA NA
d_volat_1 =~ volat_t2 1.000 0.578 NA NA
d_volat_1 ~1 0.220 0.731 1.594 0.111
volat_t1 ~1 1.702 3.425 37.064 0.000
d_volat_1 ~~ d_volat_1 0.086 0.951 3.014 0.003
d_volat_1 ~ volat_t1 -0.134 -0.221 -1.545 0.122
d_volat_1 ~~ sb07_12_t1 -0.020 -0.051 -0.515 0.607
sb07_12_t1 ~~ sb07_12_t1 1.711 1.000 17.440 0.000

Correlation of specific, facet-level change goals with volatility change score (ideal-self) is not significantly different from zero, r = -0.02, p = 0.607.

3.6.2.49 Curiosity - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7855.858 7938.83 0.972 0.044 0.049
# parameters of interest
params_lcs_curio_curr_hyp4 <- broom::tidy(fit_mi_lcs_curio_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.032 NA NA
d_curio_1 =~ curio_t2 1.000 0.357 NA NA
d_curio_1 ~1 0.429 2.518 1.777 0.076
curio_t1 ~1 4.075 8.269 82.929 0.000
d_curio_1 ~~ d_curio_1 0.027 0.932 1.253 0.210
d_curio_1 ~ curio_t1 -0.090 -0.260 -1.548 0.122
d_curio_1 ~~ sb06_01_t1 -0.010 -0.060 -0.372 0.710
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.322 0.000
sb06_01_t1 ~1 3.074 3.053 53.618 0.000

Correlation of general change goal with curiosity change score (current-self) is not significantly different from zero, r = -0.01, p = 0.71.

3.6.2.50 Curiosity - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7856.869 7939.841 0.963 0.041 0.055
# parameters of interest
params_lcs_curio_ideal_hyp4 <- broom::tidy(fit_mi_lcs_curio_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 0.969 NA NA
d_curio_1 =~ curio_t2 1.000 0.206 NA NA
d_curio_1 ~1 -0.056 -0.705 -0.111 0.912
curio_t1 ~1 4.414 11.713 108.878 0.000
d_curio_1 ~~ d_curio_1 0.006 0.998 0.286 0.775
d_curio_1 ~ curio_t1 0.010 0.047 0.089 0.929
d_curio_1 ~~ sb06_01_t1 -0.012 -0.144 -0.437 0.662
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.325 0.000
sb06_01_t1 ~1 3.074 3.053 53.663 0.000

Correlation of general change goal with curiosity change score (ideal-self) is not significantly different from zero, r = -0.012, p = 0.662.

3.6.2.51 Curiosity - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7995.402 8078.374 0.954 0.057 0.066
# parameters of interest
params_lcs_curio_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_curio_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sb07_13_t1", "sb07_13_t1 ~~ sb07_13_t1", # change goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.041 NA NA
d_curio_1 =~ curio_t2 1.000 0.374 NA NA
d_curio_1 ~1 0.481 2.758 1.866 0.062
curio_t1 ~1 4.076 8.386 83.004 0.000
d_curio_1 ~~ d_curio_1 0.028 0.918 1.296 0.195
d_curio_1 ~ curio_t1 -0.103 -0.286 -1.642 0.101
d_curio_1 ~~ sb07_13_t1 -0.027 -0.128 -0.746 0.456
sb07_13_t1 ~~ sb07_13_t1 1.596 1.000 17.750 0.000

Correlation of specific, facet-level change goals with curiosity change score (current-self) is not significantly different from zero, r = -0.027, p = 0.456.

3.6.2.52 Curiosity - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7997.135 8080.106 0.988 0.023 0.042
# parameters of interest
params_lcs_curio_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_curio_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sb07_13_t1", "sb07_13_t1 ~~ sb07_13_t1", # change goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 0.971 NA NA
d_curio_1 =~ curio_t2 1.000 0.212 NA NA
d_curio_1 ~1 -0.040 -0.480 -0.083 0.934
curio_t1 ~1 4.414 11.645 108.864 0.000
d_curio_1 ~~ d_curio_1 0.007 0.999 0.307 0.759
d_curio_1 ~ curio_t1 0.006 0.029 0.059 0.953
d_curio_1 ~~ sb07_13_t1 0.012 0.118 0.355 0.723
sb07_13_t1 ~~ sb07_13_t1 1.596 1.000 17.757 0.000

Correlation of specific, facet-level change goals with curiosity change score (ideal-self) is not significantly different from zero, r = 0.012, p = 0.723.

3.6.2.53 Aesthetic - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8101.108 8184.079 0.998 0.015 0.036
# parameters of interest
params_lcs_aesth_curr_hyp4 <- broom::tidy(fit_mi_lcs_aesth_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.975 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.496 NA NA
d_aesth_1 ~1 0.312 11.794 1.881 0.060
aesth_t1 ~1 2.999 57.657 49.430 0.000
d_aesth_1 ~~ d_aesth_1 0.001 0.959 4.203 0.000
d_aesth_1 ~ aesth_t1 -0.103 -0.203 -1.875 0.061
d_aesth_1 ~~ sb06_01_t1 -0.001 -0.047 -0.552 0.581
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.322 0.000
sb06_01_t1 ~1 3.074 3.053 53.663 0.000

Correlation of general change goal with aesthetic change score (current-self) is not significantly different from zero, r = -0.001, p = 0.581.

3.6.2.54 Aesthetic - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7933.154 8016.126 0.998 0.014 0.046
# parameters of interest
params_lcs_aesth_ideal_hyp4 <- broom::tidy(fit_mi_lcs_aesth_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.926 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.551 NA NA
d_aesth_1 ~1 0.285 3.023 1.269 0.205
aesth_t1 ~1 3.123 19.722 46.424 0.000
d_aesth_1 ~~ d_aesth_1 0.009 0.975 1.154 0.249
d_aesth_1 ~ aesth_t1 -0.094 -0.158 -1.329 0.184
d_aesth_1 ~~ sb06_01_t1 -0.010 -0.102 -0.997 0.319
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.327 0.000
sb06_01_t1 ~1 3.074 3.052 53.634 0.000

Correlation of general change goal with aesthetic change score (ideal-self) is not significantly different from zero, r = -0.01, p = 0.319.

3.6.2.55 Aesthetic - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8288.569 8371.541 0.997 0.016 0.04
# parameters of interest
params_lcs_aesth_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_aesth_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sb07_14_t1", "sb07_14_t1 ~~ sb07_14_t1", # change goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.978 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.498 NA NA
d_aesth_1 ~1 0.324 11.119 1.984 0.047
aesth_t1 ~1 2.999 52.540 49.425 0.000
d_aesth_1 ~~ d_aesth_1 0.001 0.956 4.211 0.000
d_aesth_1 ~ aesth_t1 -0.107 -0.210 -1.977 0.048
d_aesth_1 ~~ sb07_14_t1 0.006 0.165 1.933 0.053
sb07_14_t1 ~~ sb07_14_t1 1.882 1.000 20.454 0.000

Correlation of specific, facet-level change goals with aesthetic change score (current-self) is not significantly different from zero, r = 0.006, p = 0.053.

3.6.2.56 Aesthetic - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 8121.465 8204.437 0.993 0.023 0.052
# parameters of interest
params_lcs_aesth_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_aesth_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sb07_14_t1", "sb07_14_t1 ~~ sb07_14_t1", # change goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.942 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.572 NA NA
d_aesth_1 ~1 0.368 3.895 1.658 0.097
aesth_t1 ~1 3.123 20.055 46.426 0.000
d_aesth_1 ~~ d_aesth_1 0.009 0.961 1.135 0.256
d_aesth_1 ~ aesth_t1 -0.121 -0.199 -1.723 0.085
d_aesth_1 ~~ sb07_14_t1 0.022 0.171 1.419 0.156
sb07_14_t1 ~~ sb07_14_t1 1.883 1.000 20.441 0.000

Correlation of specific, facet-level change goals with aesthetic change score (ideal-self) is not significantly different from zero, r = 0.022, p = 0.156.

3.6.2.57 Imagination - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7695.669 7778.641 0.973 0.05 0.055
# parameters of interest
params_lcs_imagi_curr_hyp4 <- broom::tidy(fit_mi_lcs_imagi_curr_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_hyp4, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.991 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.504 NA NA
d_imagi_1 ~1 0.519 1.303 2.309 0.021
imagi_t1 ~1 3.555 4.538 64.413 0.000
d_imagi_1 ~~ d_imagi_1 0.150 0.944 3.466 0.001
d_imagi_1 ~ imagi_t1 -0.120 -0.236 -1.974 0.048
d_imagi_1 ~~ sb06_01_t1 0.002 0.005 0.059 0.953
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.654 0.000

Correlation of general change goal with imagination change score (current-self) is not significantly different from zero, r = 0.002, p = 0.953.

3.6.2.58 Imagination - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7157.327 7240.298 0.917 0.063 0.066
# parameters of interest
params_lcs_imagi_ideal_hyp4 <- broom::tidy(fit_mi_lcs_imagi_ideal_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_hyp4, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.973 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.837 NA NA
d_imagi_1 ~1 1.561 3.592 2.450 0.014
imagi_t1 ~1 4.565 9.030 128.764 0.000
d_imagi_1 ~~ d_imagi_1 0.159 0.842 3.807 0.000
d_imagi_1 ~ imagi_t1 -0.342 -0.397 -2.508 0.012
d_imagi_1 ~~ sb06_01_t1 0.010 0.024 0.298 0.766
sb06_01_t1 ~~ sb06_01_t1 1.014 1.000 13.323 0.000
sb06_01_t1 ~1 3.074 3.053 53.676 0.000

Correlation of general change goal with imagination change score (ideal-self) is not significantly different from zero, r = 0.01, p = 0.766.

3.6.2.59 Imagination - current-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7897.97 7980.942 0.948 0.07 0.081
# parameters of interest
params_lcs_imagi_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_imagi_curr_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sb07_15_t1", "sb07_15_t1 ~~ sb07_15_t1", # change goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.986 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.499 NA NA
d_imagi_1 ~1 0.498 1.256 2.225 0.026
imagi_t1 ~1 3.555 4.536 64.388 0.000
d_imagi_1 ~~ d_imagi_1 0.149 0.949 3.447 0.001
d_imagi_1 ~ imagi_t1 -0.114 -0.225 -1.884 0.060
d_imagi_1 ~~ sb07_15_t1 0.033 0.061 0.684 0.494
sb07_15_t1 ~~ sb07_15_t1 1.977 1.000 20.647 0.000

Correlation of specific, facet-level change goals with imagination change score (current-self) is not significantly different from zero, r = 0.033, p = 0.494.

3.6.2.60 Imagination - ideal-self: specific, facet-level change goals

Results summary (*sb07_$$_t1* = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 22 7359.83 7442.801 0.917 0.063 0.064
# parameters of interest
params_lcs_imagi_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_imagi_ideal_specif_hyp4, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sb07_15_t1", "sb07_15_t1 ~~ sb07_15_t1", # change goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_specif_hyp4, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.969 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.829 NA NA
d_imagi_1 ~1 1.523 3.519 2.382 0.017
imagi_t1 ~1 4.564 9.013 128.789 0.000
d_imagi_1 ~~ d_imagi_1 0.159 0.848 3.825 0.000
d_imagi_1 ~ imagi_t1 -0.333 -0.390 -2.438 0.015
d_imagi_1 ~~ sb07_15_t1 -0.026 -0.047 -0.598 0.550
sb07_15_t1 ~~ sb07_15_t1 1.977 1.000 20.648 0.000

Correlation of specific, facet-level change goals with imagination change score (ideal-self) is not significantly different from zero, r = -0.026, p = 0.55.

3.6.3 Hyp 4: Effects summary

Run models for all facets with a template & loop:

Show the code
# create df for table:

df_table_hyp4 <- bind_rows(
  #traits
  params_lcs_extra_curr_hyp4 %>% filter(term=="d_extra_1 ~~ sb06_01_t1"),
  params_lcs_extra_ideal_hyp4 %>% filter(term=="d_extra_1 ~~ sb06_01_t1"),
  params_lcs_extra_curr_specif_hyp4 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_extra_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_agree_curr_hyp4 %>% filter(term=="d_agree_1 ~~ sb06_01_t1"),
  params_lcs_agree_ideal_hyp4 %>% filter(term=="d_agree_1 ~~ sb06_01_t1"),
  params_lcs_agree_curr_specif_hyp4 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_agree_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_consc_curr_hyp4 %>% filter(term=="d_consc_1 ~~ sb06_01_t1"),
  params_lcs_consc_ideal_hyp4 %>% filter(term=="d_consc_1 ~~ sb06_01_t1"),
  params_lcs_consc_curr_specif_hyp4 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_consc_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_neuro_curr_hyp4 %>% filter(term=="d_neuro_1 ~~ sb06_01_t1"),
  params_lcs_neuro_ideal_hyp4 %>% filter(term=="d_neuro_1 ~~ sb06_01_t1"),
  params_lcs_neuro_curr_specif_hyp4 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_neuro_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_openn_curr_hyp4 %>% filter(term=="d_openn_1 ~~ sb06_01_t1"),
  params_lcs_openn_ideal_hyp4 %>% filter(term=="d_openn_1 ~~ sb06_01_t1"),
  params_lcs_openn_curr_specif_hyp4 %>% filter(term=="goals ~~ d_openn_1"),
  params_lcs_openn_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_openn_1"),
  #facets
  params_lcs_socia_curr_hyp4 %>% filter(term=="d_socia_1 ~~ sb06_01_t1"),
  params_lcs_socia_ideal_hyp4 %>% filter(term=="d_socia_1 ~~ sb06_01_t1"),
  params_lcs_socia_curr_specif_hyp4 %>% filter(term=="d_socia_1 ~~ sb07_01_t1"),
  params_lcs_socia_ideal_specif_hyp4 %>% filter(term=="d_socia_1 ~~ sb07_01_t1"),
  params_lcs_asser_curr_hyp4 %>% filter(term=="d_asser_1 ~~ sb06_01_t1"),
  params_lcs_asser_ideal_hyp4 %>% filter(term=="d_asser_1 ~~ sb06_01_t1"),
  params_lcs_asser_curr_specif_hyp4 %>% filter(term=="d_asser_1 ~~ sb07_02_t1"),
  params_lcs_asser_ideal_specif_hyp4 %>% filter(term=="d_asser_1 ~~ sb07_02_t1"),
  params_lcs_energ_curr_hyp4 %>% filter(term=="d_energ_1 ~~ sb06_01_t1"),
  params_lcs_energ_ideal_hyp4 %>% filter(term=="d_energ_1 ~~ sb06_01_t1"),
  params_lcs_energ_curr_specif_hyp4 %>% filter(term=="d_energ_1 ~~ sb07_03_t1"),
  params_lcs_energ_ideal_specif_hyp4 %>% filter(term=="d_energ_1 ~~ sb07_03_t1"),
  params_lcs_compa_curr_hyp4 %>% filter(term=="d_compa_1 ~~ sb06_01_t1"),
  params_lcs_compa_ideal_hyp4 %>% filter(term=="d_compa_1 ~~ sb06_01_t1"),
  params_lcs_compa_curr_specif_hyp4 %>% filter(term=="d_compa_1 ~~ sb07_04_t1"),
  params_lcs_compa_ideal_specif_hyp4 %>% filter(term=="d_compa_1 ~~ sb07_04_t1"),
  params_lcs_respe_curr_hyp4 %>% filter(term=="d_respe_1 ~~ sb06_01_t1"),
  params_lcs_respe_ideal_hyp4 %>% filter(term=="d_respe_1 ~~ sb06_01_t1"),
  params_lcs_respe_curr_specif_hyp4 %>% filter(term=="d_respe_1 ~~ sb07_05_t1"),
  params_lcs_respe_ideal_specif_hyp4 %>% filter(term=="d_respe_1 ~~ sb07_05_t1"),
  params_lcs_trust_curr_hyp4 %>% filter(term=="d_trust_1 ~~ sb06_01_t1"),
  params_lcs_trust_ideal_hyp4 %>% filter(term=="d_trust_1 ~~ sb06_01_t1"),
  params_lcs_trust_curr_specif_hyp4 %>% filter(term=="d_trust_1 ~~ sb07_06_t1"),
  params_lcs_trust_ideal_specif_hyp4 %>% filter(term=="d_trust_1 ~~ sb07_06_t1"),
  params_lcs_organ_curr_hyp4 %>% filter(term=="d_organ_1 ~~ sb06_01_t1"),
  params_lcs_organ_ideal_hyp4 %>% filter(term=="d_organ_1 ~~ sb06_01_t1"),
  params_lcs_organ_curr_specif_hyp4 %>% filter(term=="d_organ_1 ~~ sb07_07_t1"),
  params_lcs_organ_ideal_specif_hyp4 %>% filter(term=="d_organ_1 ~~ sb07_07_t1"),
  params_lcs_produ_curr_hyp4 %>% filter(term=="d_produ_1 ~~ sb06_01_t1"),
  params_lcs_produ_ideal_hyp4 %>% filter(term=="d_produ_1 ~~ sb06_01_t1"),
  params_lcs_produ_curr_specif_hyp4 %>% filter(term=="d_produ_1 ~~ sb07_08_t1"),
  params_lcs_produ_ideal_specif_hyp4 %>% filter(term=="d_produ_1 ~~ sb07_08_t1"),
  params_lcs_respo_curr_hyp4 %>% filter(term=="d_respo_1 ~~ sb06_01_t1"),
  params_lcs_respo_ideal_hyp4 %>% filter(term=="d_respo_1 ~~ sb06_01_t1"),
  params_lcs_respo_curr_specif_hyp4 %>% filter(term=="d_respo_1 ~~ sb07_09_t1"),
  params_lcs_respo_ideal_specif_hyp4 %>% filter(term=="d_respo_1 ~~ sb07_09_t1"),
  params_lcs_anxie_curr_hyp4 %>% filter(term=="d_anxie_1 ~~ sb06_01_t1"),
  params_lcs_anxie_ideal_hyp4 %>% filter(term=="d_anxie_1 ~~ sb06_01_t1"),
  params_lcs_anxie_curr_specif_hyp4 %>% filter(term=="d_anxie_1 ~~ sb07_10_t1"),
  params_lcs_anxie_ideal_specif_hyp4 %>% filter(term=="d_anxie_1 ~~ sb07_10_t1"),
  params_lcs_depre_curr_hyp4 %>% filter(term=="d_depre_1 ~~ sb06_01_t1"),
  params_lcs_depre_ideal_hyp4 %>% filter(term=="d_depre_1 ~~ sb06_01_t1"),
  params_lcs_depre_curr_specif_hyp4 %>% filter(term=="d_depre_1 ~~ sb07_11_t1"),
  params_lcs_depre_ideal_specif_hyp4 %>% filter(term=="d_depre_1 ~~ sb07_11_t1"),
  params_lcs_volat_curr_hyp4 %>% filter(term=="d_volat_1 ~~ sb06_01_t1"),
  params_lcs_volat_ideal_hyp4 %>% filter(term=="d_volat_1 ~~ sb06_01_t1"),
  params_lcs_volat_curr_specif_hyp4 %>% filter(term=="d_volat_1 ~~ sb07_12_t1"),
  params_lcs_volat_ideal_specif_hyp4 %>% filter(term=="d_volat_1 ~~ sb07_12_t1"),
  params_lcs_curio_curr_hyp4 %>% filter(term=="d_curio_1 ~~ sb06_01_t1"),
  params_lcs_curio_ideal_hyp4 %>% filter(term=="d_curio_1 ~~ sb06_01_t1"),
  params_lcs_curio_curr_specif_hyp4 %>% filter(term=="d_curio_1 ~~ sb07_13_t1"),
  params_lcs_curio_ideal_specif_hyp4 %>% filter(term=="d_curio_1 ~~ sb07_13_t1"),
  params_lcs_aesth_curr_hyp4 %>% filter(term=="d_aesth_1 ~~ sb06_01_t1"),
  params_lcs_aesth_ideal_hyp4 %>% filter(term=="d_aesth_1 ~~ sb06_01_t1"),
  params_lcs_aesth_curr_specif_hyp4 %>% filter(term=="d_aesth_1 ~~ sb07_14_t1"),
  params_lcs_aesth_ideal_specif_hyp4 %>% filter(term=="d_aesth_1 ~~ sb07_14_t1"),
  params_lcs_imagi_curr_hyp4 %>% filter(term=="d_imagi_1 ~~ sb06_01_t1"),
  params_lcs_imagi_ideal_hyp4 %>% filter(term=="d_imagi_1 ~~ sb06_01_t1"),
  params_lcs_imagi_curr_specif_hyp4 %>% filter(term=="d_imagi_1 ~~ sb07_15_t1"),
  params_lcs_imagi_ideal_specif_hyp4 %>% filter(term=="d_imagi_1 ~~ sb07_15_t1"),
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=4),
         ref = rep(rep(c("current", "ideal"), 2), 20),
         goal = rep(c(rep("general", 2), rep("specific", 2)), 20)) %>% 
  select(trait, ref, goal, estimate, std.all, statistic, p.value)

Results summary across the Big Five traits: covariance of the latent change score and change goal(s)

kable(df_table_hyp4[1:20, ], digits = 3)
trait ref goal estimate std.all statistic p.value
extraversion current general 0.073 0.142 1.842 0.065
extraversion ideal general 0.036 0.136 1.590 0.112
extraversion current specific 0.012 0.041 0.367 0.713
extraversion ideal specific 0.012 0.077 0.518 0.604
agreeableness current general -0.007 -0.025 -0.329 0.742
agreeableness ideal general -0.004 -0.013 -0.145 0.885
agreeableness current specific 0.018 0.070 0.704 0.481
agreeableness ideal specific -0.040 -0.135 -1.368 0.171
conscientiousness current general -0.022 -0.049 -0.664 0.506
conscientiousness ideal general 0.006 0.021 0.262 0.793
conscientiousness current specific 0.011 0.021 0.225 0.822
conscientiousness ideal specific 0.027 0.086 1.098 0.272
neuroticism current general 0.034 0.069 1.055 0.291
neuroticism ideal general 0.021 0.081 0.962 0.336
neuroticism current specific -0.118 -0.216 -2.157 0.031
neuroticism ideal specific -0.008 -0.026 -0.342 0.732
openness current general -0.001 -0.045 -0.525 0.600
openness ideal general -0.005 -0.088 -0.721 0.471
openness current specific 0.005 0.226 0.790 0.430
openness ideal specific 0.004 0.105 0.755 0.450

Only one covariance that significantly differs from zero: changes in current-level neuroticism covary with specific trait goals (latent factor of the three N facets).

Results summary across the Big Five facets: covariance of the latent change score and change goal(s)

kable(df_table_hyp4[21:80, ], digits = 3)
trait ref goal estimate std.all statistic p.value
sociability current general 0.072 0.145 1.777 0.076
sociability ideal general 0.042 0.183 1.517 0.129
sociability current specific -0.051 -0.086 -1.057 0.290
sociability ideal specific 0.059 0.215 1.902 0.057
assertiveness current general 0.009 0.042 0.298 0.766
assertiveness ideal general 0.038 0.198 1.913 0.056
assertiveness current specific 0.008 0.030 0.221 0.825
assertiveness ideal specific 0.011 0.047 0.478 0.633
energy current general -0.014 -0.063 -0.676 0.499
energy ideal general -0.024 -0.095 -0.947 0.343
energy current specific 0.024 0.084 0.979 0.327
energy ideal specific 0.026 0.086 0.799 0.424
compassion current general 0.023 0.120 0.893 0.372
compassion ideal general 0.016 0.042 0.365 0.715
compassion current specific -0.013 -0.049 -0.297 0.767
compassion ideal specific -0.054 -0.101 -0.890 0.373
respectfulness current general -0.037 -0.125 -1.401 0.161
respectfulness ideal general -0.007 -0.027 -0.284 0.776
respectfulness current specific 0.019 0.048 0.462 0.644
respectfulness ideal specific -0.071 -0.203 -2.027 0.043
trust current general -0.030 -0.088 -0.933 0.351
trust ideal general 0.003 0.012 0.121 0.904
trust current specific -0.031 -0.068 -0.697 0.486
trust ideal specific 0.019 0.067 0.645 0.519
organization current general -0.069 -0.143 -1.645 0.100
organization ideal general -0.017 -0.056 -0.589 0.556
organization current specific 0.063 0.088 0.883 0.377
organization ideal specific 0.059 0.132 1.482 0.138
productiveness current general 0.005 0.015 0.183 0.855
productiveness ideal general 0.013 0.049 0.506 0.613
productiveness current specific 0.023 0.050 0.527 0.598
productiveness ideal specific 0.025 0.074 0.883 0.377
responsibility current general -0.044 -0.214 -1.927 0.054
responsibility ideal general 0.003 0.010 0.097 0.923
responsibility current specific -0.045 -0.145 -1.281 0.200
responsibility ideal specific -0.016 -0.039 -0.361 0.718
anxiety current general 0.053 0.103 1.330 0.184
anxiety ideal general 0.009 0.064 0.575 0.566
anxiety current specific -0.219 -0.269 -2.731 0.006
anxiety ideal specific 0.019 0.085 0.858 0.391
depression current general 0.018 0.048 0.665 0.506
depression ideal general 0.033 0.108 1.174 0.240
depression current specific -0.181 -0.295 -2.709 0.007
depression ideal specific -0.059 -0.120 -1.563 0.118
volatility current general 0.016 0.035 0.413 0.679
volatility ideal general -0.044 -0.146 -1.397 0.162
volatility current specific -0.009 -0.016 -0.173 0.863
volatility ideal specific -0.020 -0.051 -0.515 0.607
curiosity current general -0.010 -0.060 -0.372 0.710
curiosity ideal general -0.012 -0.144 -0.437 0.662
curiosity current specific -0.027 -0.128 -0.746 0.456
curiosity ideal specific 0.012 0.118 0.355 0.723
aesthetic current general -0.001 -0.047 -0.552 0.581
aesthetic ideal general -0.010 -0.102 -0.997 0.319
aesthetic current specific 0.006 0.165 1.933 0.053
aesthetic ideal specific 0.022 0.171 1.419 0.156
imagination current general 0.002 0.005 0.059 0.953
imagination ideal general 0.010 0.024 0.298 0.766
imagination current specific 0.033 0.061 0.684 0.494
imagination ideal specific -0.026 -0.047 -0.598 0.550

Looking at the facets, we see only three covariances that significantly differ from zero: Matching the effects from neuroticism above, we find that changes in current-level anxiety and depression covary with the respective specific facet change goal. Further, changes in ideal-level respectfulness covary with the specific facet change goal (small effect that is barely significant and in the unexpected direction).

3.7 Hypothesis 5: Acceptance goals and change in personality (current / ideal) in self-acceptance group

In the self-acceptance group, there will be a correlation between acceptance goals and change in ideal-self ratings but not change in current-self ratings.

We will test this one domain/facet at a time. We will use both general continuous change goal score as well as trait-specific change goals. To test this hypothesis, we will estimate the mean-level difference across time for both current and ideal trait ratings using latent change models and correlate change goals with the change variable from those models.

Reshape and split data set by intervention group:

Show the code
df_sbsa_wide_pers_sa <- df_sbsa %>% 
  filter(rando=="Self-Acceptance") %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("bf05", "bf06", 
                                  "sa07")), # facet-specific change goals
         sa06_01) %>% # general change goal
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with(c("bf05", "bf06", "sa07")), sa06_01)) %>% 
  select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, 
            sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, 
            sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, sa06_01_t2))
colnames(df_sbsa_wide_pers_sa)

3.7.1 Big Five traits

3.7.1.1 Extraversion - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_curr_hyp5 <- '
extra_t1 =~ 1*bf05_01_t1 + lamb2*bf05_06_t1 + lamb3*bf05_11_t1 + lamb4*bf05_16_t1 + lamb5*bf05_21_t1 + lamb6*bf05_26_t1 + lamb7*bf05_31_t1 + lamb8*bf05_36_t1 + lamb9*bf05_41_t1 + lamb10*bf05_46_t1 + lamb11*bf05_51_t1 + lamb12*bf05_56_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*bf05_01_t2 + lamb2*bf05_06_t2 + lamb3*bf05_11_t2 + lamb4*bf05_16_t2 + lamb5*bf05_21_t2 + lamb6*bf05_26_t2 + lamb7*bf05_31_t2 + lamb8*bf05_36_t2 + lamb9*bf05_41_t2 + lamb10*bf05_46_t2 + lamb11*bf05_51_t2 + lamb12*bf05_56_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf05_01_t1 ~~ bf05_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_06_t1 ~~ bf05_06_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_11_t1 ~~ bf05_11_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_16_t1 ~~ bf05_16_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_21_t1 ~~ bf05_21_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_26_t1 ~~ bf05_26_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_31_t1 ~~ bf05_31_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_36_t1 ~~ bf05_36_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_41_t1 ~~ bf05_41_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_46_t1 ~~ bf05_46_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_51_t1 ~~ bf05_51_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_56_t1 ~~ bf05_56_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_01_t1 ~~ res1*bf05_01_t1   # This allows residual variance on indicator X1 at T1 
bf05_06_t1 ~~ res2*bf05_06_t1   # This allows residual variance on indicator X2 at T1
bf05_11_t1 ~~ res3*bf05_11_t1   # This allows residual variance on indicator X3 at T1
bf05_16_t1 ~~ res4*bf05_16_t1   # This allows residual variance on indicator X4 at T1
bf05_21_t1 ~~ res5*bf05_21_t1   # This allows residual variance on indicator X5 at T1
bf05_26_t1 ~~ res6*bf05_26_t1   # This allows residual variance on indicator X6 at T1 
bf05_31_t1 ~~ res7*bf05_31_t1   # This allows residual variance on indicator X7 at T1
bf05_36_t1 ~~ res8*bf05_36_t1   # This allows residual variance on indicator X8 at T1
bf05_41_t1 ~~ res9*bf05_41_t1   # This allows residual variance on indicator X9 at T1
bf05_46_t1 ~~ res10*bf05_46_t1  # This allows residual variance on indicator X10 at T1
bf05_51_t1 ~~ res11*bf05_51_t1  # This allows residual variance on indicator X11 at T1
bf05_56_t1 ~~ res12*bf05_56_t1  # This allows residual variance on indicator X12 at T1

bf05_01_t2 ~~ res1*bf05_01_t2  # This allows residual variance on indicator X1 at T2 
bf05_06_t2 ~~ res2*bf05_06_t2  # This allows residual variance on indicator X2 at T2 
bf05_11_t2 ~~ res3*bf05_11_t2  # This allows residual variance on indicator X3 at T2
bf05_16_t2 ~~ res4*bf05_16_t2  # This allows residual variance on indicator X4 at T2
bf05_21_t2 ~~ res5*bf05_21_t2  # This allows residual variance on indicator X5 at T2
bf05_26_t2 ~~ res6*bf05_26_t2  # This allows residual variance on indicator X6 at T2 
bf05_31_t2 ~~ res7*bf05_31_t2  # This allows residual variance on indicator X7 at T2 
bf05_36_t2 ~~ res8*bf05_36_t2  # This allows residual variance on indicator X8 at T2
bf05_41_t2 ~~ res9*bf05_41_t2  # This allows residual variance on indicator X9 at T2
bf05_46_t2 ~~ res10*bf05_46_t2 # This allows residual variance on indicator X10 at T2
bf05_51_t2 ~~ res11*bf05_51_t2 # This allows residual variance on indicator X11 at T2
bf05_56_t2 ~~ res12*bf05_56_t2 # This allows residual variance on indicator X12 at T2

bf05_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_06_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_11_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_16_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_21_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_26_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_31_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_36_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_41_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_46_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_51_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_56_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_06_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_11_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_16_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_21_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_26_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_31_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_36_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_41_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_46_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_51_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_56_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_extra_curr_hyp5 <- lavaan(mi_lcs_extra_curr_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 54 21033.62 21234.34 0.867 0.072 0.08
# parameters of interest
params_lcs_extra_curr_hyp5 <- broom::tidy(fit_mi_lcs_extra_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                     "d_extra_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                     "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.048 NA NA
d_extra_1 =~ extra_t2 1.000 0.539 NA NA
d_extra_1 ~1 0.701 1.460 5.837 0.000
extra_t1 ~1 2.786 2.984 39.310 0.000
d_extra_1 ~~ d_extra_1 0.203 0.882 5.159 0.000
d_extra_1 ~ extra_t1 -0.177 -0.344 -4.401 0.000
d_extra_1 ~~ sa06_01_t1 0.059 0.138 2.234 0.025
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.799 0.000

The correlation of general acceptance goal with the extraversion change score (current-self) is significantly different from zero, r = 0.059, p = 0.025.

3.7.1.2 Extraversion - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_ideal_hyp5 <- '
extra_t1 =~ 1*bf06_01_t1 + lamb2*bf06_06_t1 + lamb3*bf06_11_t1 + lamb4*bf06_16_t1 + lamb5*bf06_21_t1 + lamb6*bf06_26_t1 + lamb7*bf06_31_t1 + lamb8*bf06_36_t1 + lamb9*bf06_41_t1 + lamb10*bf06_46_t1 + lamb11*bf06_51_t1 + lamb12*bf06_56_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*bf06_01_t2 + lamb2*bf06_06_t2 + lamb3*bf06_11_t2 + lamb4*bf06_16_t2 + lamb5*bf06_21_t2 + lamb6*bf06_26_t2 + lamb7*bf06_31_t2 + lamb8*bf06_36_t2 + lamb9*bf06_41_t2 + lamb10*bf06_46_t2 + lamb11*bf06_51_t2 + lamb12*bf06_56_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf06_01_t1 ~~ bf06_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_06_t1 ~~ bf06_06_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_11_t1 ~~ bf06_11_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_16_t1 ~~ bf06_16_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_21_t1 ~~ bf06_21_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_26_t1 ~~ bf06_26_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_31_t1 ~~ bf06_31_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_36_t1 ~~ bf06_36_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_41_t1 ~~ bf06_41_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_46_t1 ~~ bf06_46_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_51_t1 ~~ bf06_51_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_56_t1 ~~ bf06_56_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_01_t1 ~~ res1*bf06_01_t1   # This allows residual variance on indicator X1 at T1 
bf06_06_t1 ~~ res2*bf06_06_t1   # This allows residual variance on indicator X2 at T1
bf06_11_t1 ~~ res3*bf06_11_t1   # This allows residual variance on indicator X3 at T1
bf06_16_t1 ~~ res4*bf06_16_t1   # This allows residual variance on indicator X4 at T1
bf06_21_t1 ~~ res5*bf06_21_t1   # This allows residual variance on indicator X5 at T1
bf06_26_t1 ~~ res6*bf06_26_t1   # This allows residual variance on indicator X6 at T1 
bf06_31_t1 ~~ res7*bf06_31_t1   # This allows residual variance on indicator X7 at T1
bf06_36_t1 ~~ res8*bf06_36_t1   # This allows residual variance on indicator X8 at T1
bf06_41_t1 ~~ res9*bf06_41_t1   # This allows residual variance on indicator X9 at T1
bf06_46_t1 ~~ res10*bf06_46_t1  # This allows residual variance on indicator X10 at T1
bf06_51_t1 ~~ res11*bf06_51_t1  # This allows residual variance on indicator X11 at T1
bf06_56_t1 ~~ res12*bf06_56_t1  # This allows residual variance on indicator X12 at T1

bf06_01_t2 ~~ res1*bf06_01_t2  # This allows residual variance on indicator X1 at T2 
bf06_06_t2 ~~ res2*bf06_06_t2  # This allows residual variance on indicator X2 at T2 
bf06_11_t2 ~~ res3*bf06_11_t2  # This allows residual variance on indicator X3 at T2
bf06_16_t2 ~~ res4*bf06_16_t2  # This allows residual variance on indicator X4 at T2
bf06_21_t2 ~~ res5*bf06_21_t2  # This allows residual variance on indicator X5 at T2
bf06_26_t2 ~~ res6*bf06_26_t2  # This allows residual variance on indicator X6 at T2 
bf06_31_t2 ~~ res7*bf06_31_t2  # This allows residual variance on indicator X7 at T2 
bf06_36_t2 ~~ res8*bf06_36_t2  # This allows residual variance on indicator X8 at T2
bf06_41_t2 ~~ res9*bf06_41_t2  # This allows residual variance on indicator X9 at T2
bf06_46_t2 ~~ res10*bf06_46_t2 # This allows residual variance on indicator X10 at T2
bf06_51_t2 ~~ res11*bf06_51_t2 # This allows residual variance on indicator X11 at T2
bf06_56_t2 ~~ res12*bf06_56_t2 # This allows residual variance on indicator X12 at T2

bf06_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_06_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_11_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_16_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_21_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_26_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_31_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_36_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_41_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_46_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_51_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_56_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_06_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_11_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_16_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_21_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_26_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_31_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_36_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_41_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_46_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_51_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_56_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_extra_ideal_hyp5 <- lavaan(mi_lcs_extra_ideal_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 54 19843.49 20044.21 0.817 0.055 0.074
# parameters of interest
params_lcs_extra_ideal_hyp5 <- broom::tidy(fit_mi_lcs_extra_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.062 NA NA
d_extra_1 =~ extra_t2 1.000 0.846 NA NA
d_extra_1 ~1 1.580 6.643 4.478 0.000
extra_t1 ~1 4.314 14.448 111.505 0.000
d_extra_1 ~~ d_extra_1 0.044 0.780 3.084 0.002
d_extra_1 ~ extra_t1 -0.374 -0.469 -4.594 0.000
d_extra_1 ~~ sa06_01_t1 0.024 0.122 1.629 0.103
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.921 0.000

Correlation of general acceptance goal with extraversion change score (ideal-self) is not significantly different from zero, r = 0.024, p = 0.103.

3.7.1.3 Extraversion - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_curr_specif_hyp5 <- '
extra_t1 =~ 1*bf05_01_t1 + lamb2*bf05_06_t1 + lamb3*bf05_11_t1 + lamb4*bf05_16_t1 + lamb5*bf05_21_t1 + lamb6*bf05_26_t1 + lamb7*bf05_31_t1 + lamb8*bf05_36_t1 + lamb9*bf05_41_t1 + lamb10*bf05_46_t1 + lamb11*bf05_51_t1 + lamb12*bf05_56_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*bf05_01_t2 + lamb2*bf05_06_t2 + lamb3*bf05_11_t2 + lamb4*bf05_16_t2 + lamb5*bf05_21_t2 + lamb6*bf05_26_t2 + lamb7*bf05_31_t2 + lamb8*bf05_36_t2 + lamb9*bf05_41_t2 + lamb10*bf05_46_t2 + lamb11*bf05_51_t2 + lamb12*bf05_56_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

goals =~ 1*sa07_01_t1 + sa07_02_t1 + sa07_03_t1 # latent acceptance goal variable (three facets per trait)

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf05_01_t1 ~~ bf05_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_06_t1 ~~ bf05_06_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_11_t1 ~~ bf05_11_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_16_t1 ~~ bf05_16_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_21_t1 ~~ bf05_21_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_26_t1 ~~ bf05_26_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_31_t1 ~~ bf05_31_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_36_t1 ~~ bf05_36_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_41_t1 ~~ bf05_41_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_46_t1 ~~ bf05_46_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_51_t1 ~~ bf05_51_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_56_t1 ~~ bf05_56_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_01_t1 ~~ res1*bf05_01_t1   # This allows residual variance on indicator X1 at T1 
bf05_06_t1 ~~ res2*bf05_06_t1   # This allows residual variance on indicator X2 at T1
bf05_11_t1 ~~ res3*bf05_11_t1   # This allows residual variance on indicator X3 at T1
bf05_16_t1 ~~ res4*bf05_16_t1   # This allows residual variance on indicator X4 at T1
bf05_21_t1 ~~ res5*bf05_21_t1   # This allows residual variance on indicator X5 at T1
bf05_26_t1 ~~ res6*bf05_26_t1   # This allows residual variance on indicator X6 at T1 
bf05_31_t1 ~~ res7*bf05_31_t1   # This allows residual variance on indicator X7 at T1
bf05_36_t1 ~~ res8*bf05_36_t1   # This allows residual variance on indicator X8 at T1
bf05_41_t1 ~~ res9*bf05_41_t1   # This allows residual variance on indicator X9 at T1
bf05_46_t1 ~~ res10*bf05_46_t1  # This allows residual variance on indicator X10 at T1
bf05_51_t1 ~~ res11*bf05_51_t1  # This allows residual variance on indicator X11 at T1
bf05_56_t1 ~~ res12*bf05_56_t1  # This allows residual variance on indicator X12 at T1

bf05_01_t2 ~~ res1*bf05_01_t2  # This allows residual variance on indicator X1 at T2 
bf05_06_t2 ~~ res2*bf05_06_t2  # This allows residual variance on indicator X2 at T2 
bf05_11_t2 ~~ res3*bf05_11_t2  # This allows residual variance on indicator X3 at T2
bf05_16_t2 ~~ res4*bf05_16_t2  # This allows residual variance on indicator X4 at T2
bf05_21_t2 ~~ res5*bf05_21_t2  # This allows residual variance on indicator X5 at T2
bf05_26_t2 ~~ res6*bf05_26_t2  # This allows residual variance on indicator X6 at T2 
bf05_31_t2 ~~ res7*bf05_31_t2  # This allows residual variance on indicator X7 at T2 
bf05_36_t2 ~~ res8*bf05_36_t2  # This allows residual variance on indicator X8 at T2
bf05_41_t2 ~~ res9*bf05_41_t2  # This allows residual variance on indicator X9 at T2
bf05_46_t2 ~~ res10*bf05_46_t2 # This allows residual variance on indicator X10 at T2
bf05_51_t2 ~~ res11*bf05_51_t2 # This allows residual variance on indicator X11 at T2
bf05_56_t2 ~~ res12*bf05_56_t2 # This allows residual variance on indicator X12 at T2

bf05_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_06_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_11_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_16_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_21_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_26_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_31_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_36_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_41_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_46_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_51_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_56_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_06_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_11_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_16_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_21_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_26_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_31_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_36_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_41_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_46_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_51_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_56_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_01_t1 ~~ sa07_01_t1
sa07_02_t1 ~~ sa07_02_t1
sa07_03_t1 ~~ sa07_03_t1

sa07_01_t1 ~ 1
sa07_02_t1 ~ 1
sa07_03_t1 ~ 1
'
fit_mi_lcs_extra_curr_specif_hyp5 <- lavaan(mi_lcs_extra_curr_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 61 23252.49 23479.23 0.828 0.079 0.124
# parameters of interest
params_lcs_extra_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_extra_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "goals ~~ d_extra_1", "goals ~~ goals", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.031 NA NA
d_extra_1 =~ extra_t2 1.000 0.523 NA NA
d_extra_1 ~1 0.650 1.373 4.811 0.000
extra_t1 ~1 2.786 2.986 39.310 0.000
d_extra_1 ~~ d_extra_1 0.202 0.902 5.148 0.000
d_extra_1 ~ extra_t1 -0.159 -0.313 -3.395 0.001
goals ~~ d_extra_1 0.041 0.106 0.960 0.337
goals ~~ goals 0.738 1.000 3.687 0.000

Correlation of specific, facet-level acceptance goals with extraversion change score (current-self) is not significantly different from zero, r = 0.041, p = 0.337.

3.7.1.4 Extraversion - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_ideal_specif_hyp5 <- '
extra_t1 =~ 1*bf06_01_t1 + lamb2*bf06_06_t1 + lamb3*bf06_11_t1 + lamb4*bf06_16_t1 + lamb5*bf06_21_t1 + lamb6*bf06_26_t1 + lamb7*bf06_31_t1 + lamb8*bf06_36_t1 + lamb9*bf06_41_t1 + lamb10*bf06_46_t1 + lamb11*bf06_51_t1 + lamb12*bf06_56_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*bf06_01_t2 + lamb2*bf06_06_t2 + lamb3*bf06_11_t2 + lamb4*bf06_16_t2 + lamb5*bf06_21_t2 + lamb6*bf06_26_t2 + lamb7*bf06_31_t2 + lamb8*bf06_36_t2 + lamb9*bf06_41_t2 + lamb10*bf06_46_t2 + lamb11*bf06_51_t2 + lamb12*bf06_56_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

goals =~ 1*sa07_01_t1 + sa07_02_t1 + sa07_03_t1 # latent acceptance goal variable (three facets per trait)

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf06_01_t1 ~~ bf06_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_06_t1 ~~ bf06_06_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_11_t1 ~~ bf06_11_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_16_t1 ~~ bf06_16_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_21_t1 ~~ bf06_21_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_26_t1 ~~ bf06_26_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_31_t1 ~~ bf06_31_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_36_t1 ~~ bf06_36_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_41_t1 ~~ bf06_41_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_46_t1 ~~ bf06_46_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_51_t1 ~~ bf06_51_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_56_t1 ~~ bf06_56_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_01_t1 ~~ res1*bf06_01_t1   # This allows residual variance on indicator X1 at T1 
bf06_06_t1 ~~ res2*bf06_06_t1   # This allows residual variance on indicator X2 at T1
bf06_11_t1 ~~ res3*bf06_11_t1   # This allows residual variance on indicator X3 at T1
bf06_16_t1 ~~ res4*bf06_16_t1   # This allows residual variance on indicator X4 at T1
bf06_21_t1 ~~ res5*bf06_21_t1   # This allows residual variance on indicator X5 at T1
bf06_26_t1 ~~ res6*bf06_26_t1   # This allows residual variance on indicator X6 at T1 
bf06_31_t1 ~~ res7*bf06_31_t1   # This allows residual variance on indicator X7 at T1
bf06_36_t1 ~~ res8*bf06_36_t1   # This allows residual variance on indicator X8 at T1
bf06_41_t1 ~~ res9*bf06_41_t1   # This allows residual variance on indicator X9 at T1
bf06_46_t1 ~~ res10*bf06_46_t1  # This allows residual variance on indicator X10 at T1
bf06_51_t1 ~~ res11*bf06_51_t1  # This allows residual variance on indicator X11 at T1
bf06_56_t1 ~~ res12*bf06_56_t1  # This allows residual variance on indicator X12 at T1

bf06_01_t2 ~~ res1*bf06_01_t2  # This allows residual variance on indicator X1 at T2 
bf06_06_t2 ~~ res2*bf06_06_t2  # This allows residual variance on indicator X2 at T2 
bf06_11_t2 ~~ res3*bf06_11_t2  # This allows residual variance on indicator X3 at T2
bf06_16_t2 ~~ res4*bf06_16_t2  # This allows residual variance on indicator X4 at T2
bf06_21_t2 ~~ res5*bf06_21_t2  # This allows residual variance on indicator X5 at T2
bf06_26_t2 ~~ res6*bf06_26_t2  # This allows residual variance on indicator X6 at T2 
bf06_31_t2 ~~ res7*bf06_31_t2  # This allows residual variance on indicator X7 at T2 
bf06_36_t2 ~~ res8*bf06_36_t2  # This allows residual variance on indicator X8 at T2
bf06_41_t2 ~~ res9*bf06_41_t2  # This allows residual variance on indicator X9 at T2
bf06_46_t2 ~~ res10*bf06_46_t2 # This allows residual variance on indicator X10 at T2
bf06_51_t2 ~~ res11*bf06_51_t2 # This allows residual variance on indicator X11 at T2
bf06_56_t2 ~~ res12*bf06_56_t2 # This allows residual variance on indicator X12 at T2

bf06_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_06_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_11_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_16_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_21_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_26_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_31_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_36_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_41_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_46_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_51_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_56_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_06_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_11_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_16_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_21_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_26_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_31_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_36_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_41_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_46_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_51_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_56_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_01_t1 ~~ sa07_01_t1
sa07_02_t1 ~~ sa07_02_t1
sa07_03_t1 ~~ sa07_03_t1

sa07_01_t1 ~ 1
sa07_02_t1 ~ 1
sa07_03_t1 ~ 1
'
fit_mi_lcs_extra_ideal_specif_hyp5 <- lavaan(mi_lcs_extra_ideal_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 61 22060.29 22287.03 0.799 0.056 0.074
# parameters of interest
params_lcs_extra_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_extra_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "goals ~~ d_extra_1", "goals ~~ goals", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.056 NA NA
d_extra_1 =~ extra_t2 1.000 0.835 NA NA
d_extra_1 ~1 1.538 6.458 4.327 0.000
extra_t1 ~1 4.314 14.321 111.448 0.000
d_extra_1 ~~ d_extra_1 0.045 0.788 3.077 0.002
d_extra_1 ~ extra_t1 -0.364 -0.461 -4.448 0.000
goals ~~ d_extra_1 -0.024 -0.135 -1.087 0.277
goals ~~ goals 0.719 1.000 3.601 0.000

Correlation of specific, facet-level acceptance goals with extraversion change score (ideal-self) is not significantly different from zero, r = -0.024, p = 0.277.

3.7.1.5 Agreeableness - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_curr_hyp5 <- '
agree_t1 =~ 1*bf05_02_t1 + lamb2*bf05_07_t1 + lamb3*bf05_12_t1 + lamb4*bf05_17_t1 + lamb5*bf05_22_t1 + lamb6*bf05_27_t1 + lamb7*bf05_32_t1 + lamb8*bf05_37_t1 + lamb9*bf05_42_t1 + lamb10*bf05_47_t1 + lamb11*bf05_52_t1 + lamb12*bf05_57_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*bf05_02_t2 + lamb2*bf05_07_t2 + lamb3*bf05_12_t2 + lamb4*bf05_17_t2 + lamb5*bf05_22_t2 + lamb6*bf05_27_t2 + lamb7*bf05_32_t2 + lamb8*bf05_37_t2 + lamb9*bf05_42_t2 + lamb10*bf05_47_t2 + lamb11*bf05_52_t2 + lamb12*bf05_57_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf05_02_t1 ~~ bf05_02_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_07_t1 ~~ bf05_07_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_12_t1 ~~ bf05_12_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_17_t1 ~~ bf05_17_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_22_t1 ~~ bf05_22_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_27_t1 ~~ bf05_27_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_32_t1 ~~ bf05_32_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_37_t1 ~~ bf05_37_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_42_t1 ~~ bf05_42_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_47_t1 ~~ bf05_47_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_52_t1 ~~ bf05_52_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_57_t1 ~~ bf05_57_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_02_t1 ~~ res1*bf05_02_t1   # This allows residual variance on indicator X1 at T1 
bf05_07_t1 ~~ res2*bf05_07_t1   # This allows residual variance on indicator X2 at T1
bf05_12_t1 ~~ res3*bf05_12_t1   # This allows residual variance on indicator X3 at T1
bf05_17_t1 ~~ res4*bf05_17_t1   # This allows residual variance on indicator X4 at T1
bf05_22_t1 ~~ res5*bf05_22_t1   # This allows residual variance on indicator X5 at T1
bf05_27_t1 ~~ res6*bf05_27_t1   # This allows residual variance on indicator X6 at T1 
bf05_32_t1 ~~ res7*bf05_32_t1   # This allows residual variance on indicator X7 at T1
bf05_37_t1 ~~ res8*bf05_37_t1   # This allows residual variance on indicator X8 at T1
bf05_42_t1 ~~ res9*bf05_42_t1   # This allows residual variance on indicator X9 at T1
bf05_47_t1 ~~ res10*bf05_47_t1  # This allows residual variance on indicator X10 at T1
bf05_52_t1 ~~ res11*bf05_52_t1  # This allows residual variance on indicator X11 at T1
bf05_57_t1 ~~ res12*bf05_57_t1  # This allows residual variance on indicator X12 at T1

bf05_02_t2 ~~ res1*bf05_02_t2  # This allows residual variance on indicator X1 at T2 
bf05_07_t2 ~~ res2*bf05_07_t2  # This allows residual variance on indicator X2 at T2 
bf05_12_t2 ~~ res3*bf05_12_t2  # This allows residual variance on indicator X3 at T2
bf05_17_t2 ~~ res4*bf05_17_t2  # This allows residual variance on indicator X4 at T2
bf05_22_t2 ~~ res5*bf05_22_t2  # This allows residual variance on indicator X5 at T2
bf05_27_t2 ~~ res6*bf05_27_t2  # This allows residual variance on indicator X6 at T2 
bf05_32_t2 ~~ res7*bf05_32_t2  # This allows residual variance on indicator X7 at T2 
bf05_37_t2 ~~ res8*bf05_37_t2  # This allows residual variance on indicator X8 at T2
bf05_42_t2 ~~ res9*bf05_42_t2  # This allows residual variance on indicator X9 at T2
bf05_47_t2 ~~ res10*bf05_47_t2 # This allows residual variance on indicator X10 at T2
bf05_52_t2 ~~ res11*bf05_52_t2 # This allows residual variance on indicator X11 at T2
bf05_57_t2 ~~ res12*bf05_57_t2 # This allows residual variance on indicator X12 at T2

bf05_02_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_07_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_12_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_17_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_22_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_27_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_32_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_37_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_42_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_47_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_52_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_57_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_02_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_07_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_12_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_17_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_22_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_27_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_32_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_37_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_42_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_47_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_52_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_57_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_agree_curr_hyp5 <- lavaan(mi_lcs_agree_curr_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 54 20262.77 20463.49 0.872 0.061 0.079
# parameters of interest
params_lcs_agree_curr_hyp5 <- broom::tidy(fit_mi_lcs_agree_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                     "d_agree_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                     "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.014 NA NA
d_agree_1 =~ agree_t2 1.000 0.589 NA NA
d_agree_1 ~1 0.795 2.426 2.044 0.041
agree_t1 ~1 4.146 7.352 82.561 0.000
d_agree_1 ~~ d_agree_1 0.097 0.901 2.613 0.009
d_agree_1 ~ agree_t1 -0.183 -0.314 -2.006 0.045
d_agree_1 ~~ sa06_01_t1 0.021 0.070 0.776 0.438
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.188 4.397 75.786 0.000

Correlation of general acceptance goal with agreeableness change score (current-self) is not significantly different from zero, r = 0.021, p = 0.438.

3.7.1.6 Agreeableness - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_ideal_hyp5 <- '
agree_t1 =~ 1*bf06_02_t1 + lamb2*bf06_07_t1 + lamb3*bf06_12_t1 + lamb4*bf06_17_t1 + lamb5*bf06_22_t1 + lamb6*bf06_27_t1 + lamb7*bf06_32_t1 + lamb8*bf06_37_t1 + lamb9*bf06_42_t1 + lamb10*bf06_47_t1 + lamb11*bf06_52_t1 + lamb12*bf06_57_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*bf06_02_t2 + lamb2*bf06_07_t2 + lamb3*bf06_12_t2 + lamb4*bf06_17_t2 + lamb5*bf06_22_t2 + lamb6*bf06_27_t2 + lamb7*bf06_32_t2 + lamb8*bf06_37_t2 + lamb9*bf06_42_t2 + lamb10*bf06_47_t2 + lamb11*bf06_52_t2 + lamb12*bf06_57_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf06_02_t1 ~~ bf06_02_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_07_t1 ~~ bf06_07_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_12_t1 ~~ bf06_12_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_17_t1 ~~ bf06_17_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_22_t1 ~~ bf06_22_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_27_t1 ~~ bf06_27_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_32_t1 ~~ bf06_32_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_37_t1 ~~ bf06_37_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_42_t1 ~~ bf06_42_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_47_t1 ~~ bf06_47_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_52_t1 ~~ bf06_52_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_57_t1 ~~ bf06_57_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_02_t1 ~~ res1*bf06_02_t1   # This allows residual variance on indicator X1 at T1 
bf06_07_t1 ~~ res2*bf06_07_t1   # This allows residual variance on indicator X2 at T1
bf06_12_t1 ~~ res3*bf06_12_t1   # This allows residual variance on indicator X3 at T1
bf06_17_t1 ~~ res4*bf06_17_t1   # This allows residual variance on indicator X4 at T1
bf06_22_t1 ~~ res5*bf06_22_t1   # This allows residual variance on indicator X5 at T1
bf06_27_t1 ~~ res6*bf06_27_t1   # This allows residual variance on indicator X6 at T1 
bf06_32_t1 ~~ res7*bf06_32_t1   # This allows residual variance on indicator X7 at T1
bf06_37_t1 ~~ res8*bf06_37_t1   # This allows residual variance on indicator X8 at T1
bf06_42_t1 ~~ res9*bf06_42_t1   # This allows residual variance on indicator X9 at T1
bf06_47_t1 ~~ res10*bf06_47_t1  # This allows residual variance on indicator X10 at T1
bf06_52_t1 ~~ res11*bf06_52_t1  # This allows residual variance on indicator X11 at T1
bf06_57_t1 ~~ res12*bf06_57_t1  # This allows residual variance on indicator X12 at T1

bf06_02_t2 ~~ res1*bf06_02_t2  # This allows residual variance on indicator X1 at T2 
bf06_07_t2 ~~ res2*bf06_07_t2  # This allows residual variance on indicator X2 at T2 
bf06_12_t2 ~~ res3*bf06_12_t2  # This allows residual variance on indicator X3 at T2
bf06_17_t2 ~~ res4*bf06_17_t2  # This allows residual variance on indicator X4 at T2
bf06_22_t2 ~~ res5*bf06_22_t2  # This allows residual variance on indicator X5 at T2
bf06_27_t2 ~~ res6*bf06_27_t2  # This allows residual variance on indicator X6 at T2 
bf06_32_t2 ~~ res7*bf06_32_t2  # This allows residual variance on indicator X7 at T2 
bf06_37_t2 ~~ res8*bf06_37_t2  # This allows residual variance on indicator X8 at T2
bf06_42_t2 ~~ res9*bf06_42_t2  # This allows residual variance on indicator X9 at T2
bf06_47_t2 ~~ res10*bf06_47_t2 # This allows residual variance on indicator X10 at T2
bf06_52_t2 ~~ res11*bf06_52_t2 # This allows residual variance on indicator X11 at T2
bf06_57_t2 ~~ res12*bf06_57_t2 # This allows residual variance on indicator X12 at T2

bf06_02_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_07_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_12_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_17_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_22_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_27_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_32_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_37_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_42_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_47_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_52_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_57_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_02_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_07_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_12_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_17_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_22_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_27_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_32_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_37_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_42_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_47_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_52_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_57_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_agree_ideal_hyp5 <- lavaan(mi_lcs_agree_ideal_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 54 19391.12 19591.84 0.906 0.045 0.064
# parameters of interest
params_lcs_agree_ideal_hyp5 <- broom::tidy(fit_mi_lcs_agree_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 0.953 NA NA
d_agree_1 =~ agree_t2 1.000 0.687 NA NA
d_agree_1 ~1 0.843 2.278 3.295 0.001
agree_t1 ~1 4.282 8.343 95.733 0.000
d_agree_1 ~~ d_agree_1 0.126 0.916 4.818 0.000
d_agree_1 ~ agree_t1 -0.210 -0.290 -3.559 0.000
d_agree_1 ~~ sa06_01_t1 0.017 0.050 0.654 0.513
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.188 4.397 75.792 0.000

Correlation of general acceptance goal with agreeableness change score (ideal-self) is not significantly different from zero, r = 0.017, p = 0.513.

3.7.1.7 Agreeableness - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_curr_specif_hyp5 <- '
agree_t1 =~ 1*bf05_02_t1 + lamb2*bf05_07_t1 + lamb3*bf05_12_t1 + lamb4*bf05_17_t1 + lamb5*bf05_22_t1 + lamb6*bf05_27_t1 + lamb7*bf05_32_t1 + lamb8*bf05_37_t1 + lamb9*bf05_42_t1 + lamb10*bf05_47_t1 + lamb11*bf05_52_t1 + lamb12*bf05_57_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*bf05_02_t2 + lamb2*bf05_07_t2 + lamb3*bf05_12_t2 + lamb4*bf05_17_t2 + lamb5*bf05_22_t2 + lamb6*bf05_27_t2 + lamb7*bf05_32_t2 + lamb8*bf05_37_t2 + lamb9*bf05_42_t2 + lamb10*bf05_47_t2 + lamb11*bf05_52_t2 + lamb12*bf05_57_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

goals =~ 1*sa07_04_t1 + sa07_05_t1 + sa07_06_t1 # latent acceptance goal variable (three facets per trait)

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf05_02_t1 ~~ bf05_02_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_07_t1 ~~ bf05_07_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_12_t1 ~~ bf05_12_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_17_t1 ~~ bf05_17_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_22_t1 ~~ bf05_22_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_27_t1 ~~ bf05_27_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_32_t1 ~~ bf05_32_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_37_t1 ~~ bf05_37_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_42_t1 ~~ bf05_42_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_47_t1 ~~ bf05_47_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_52_t1 ~~ bf05_52_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_57_t1 ~~ bf05_57_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_02_t1 ~~ res1*bf05_02_t1   # This allows residual variance on indicator X1 at T1 
bf05_07_t1 ~~ res2*bf05_07_t1   # This allows residual variance on indicator X2 at T1
bf05_12_t1 ~~ res3*bf05_12_t1   # This allows residual variance on indicator X3 at T1
bf05_17_t1 ~~ res4*bf05_17_t1   # This allows residual variance on indicator X4 at T1
bf05_22_t1 ~~ res5*bf05_22_t1   # This allows residual variance on indicator X5 at T1
bf05_27_t1 ~~ res6*bf05_27_t1   # This allows residual variance on indicator X6 at T1 
bf05_32_t1 ~~ res7*bf05_32_t1   # This allows residual variance on indicator X7 at T1
bf05_37_t1 ~~ res8*bf05_37_t1   # This allows residual variance on indicator X8 at T1
bf05_42_t1 ~~ res9*bf05_42_t1   # This allows residual variance on indicator X9 at T1
bf05_47_t1 ~~ res10*bf05_47_t1  # This allows residual variance on indicator X10 at T1
bf05_52_t1 ~~ res11*bf05_52_t1  # This allows residual variance on indicator X11 at T1
bf05_57_t1 ~~ res12*bf05_57_t1  # This allows residual variance on indicator X12 at T1

bf05_02_t2 ~~ res1*bf05_02_t2  # This allows residual variance on indicator X1 at T2 
bf05_07_t2 ~~ res2*bf05_07_t2  # This allows residual variance on indicator X2 at T2 
bf05_12_t2 ~~ res3*bf05_12_t2  # This allows residual variance on indicator X3 at T2
bf05_17_t2 ~~ res4*bf05_17_t2  # This allows residual variance on indicator X4 at T2
bf05_22_t2 ~~ res5*bf05_22_t2  # This allows residual variance on indicator X5 at T2
bf05_27_t2 ~~ res6*bf05_27_t2  # This allows residual variance on indicator X6 at T2 
bf05_32_t2 ~~ res7*bf05_32_t2  # This allows residual variance on indicator X7 at T2 
bf05_37_t2 ~~ res8*bf05_37_t2  # This allows residual variance on indicator X8 at T2
bf05_42_t2 ~~ res9*bf05_42_t2  # This allows residual variance on indicator X9 at T2
bf05_47_t2 ~~ res10*bf05_47_t2 # This allows residual variance on indicator X10 at T2
bf05_52_t2 ~~ res11*bf05_52_t2 # This allows residual variance on indicator X11 at T2
bf05_57_t2 ~~ res12*bf05_57_t2 # This allows residual variance on indicator X12 at T2

bf05_02_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_07_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_12_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_17_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_22_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_27_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_32_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_37_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_42_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_47_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_52_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_57_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_02_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_07_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_12_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_17_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_22_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_27_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_32_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_37_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_42_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_47_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_52_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_57_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_04_t1 ~~ sa07_04_t1
sa07_05_t1 ~~ sa07_05_t1
sa07_06_t1 ~~ sa07_06_t1

sa07_04_t1 ~ 1
sa07_05_t1 ~ 1
sa07_06_t1 ~ 1
'
fit_mi_lcs_agree_curr_specif_hyp5 <- lavaan(mi_lcs_agree_curr_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 61 22333.41 22560.15 0.877 0.057 0.084
# parameters of interest
params_lcs_agree_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_agree_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "goals ~~ d_agree_1", "goals ~~ goals", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.003 NA NA
d_agree_1 =~ agree_t2 1.000 0.577 NA NA
d_agree_1 ~1 0.736 2.274 2.009 0.045
agree_t1 ~1 4.146 7.370 82.621 0.000
d_agree_1 ~~ d_agree_1 0.096 0.914 2.647 0.008
d_agree_1 ~ agree_t1 -0.168 -0.293 -1.968 0.049
goals ~~ d_agree_1 0.011 0.044 0.517 0.605
goals ~~ goals 0.645 1.000 4.396 0.000

Correlation of specific, facet-level acceptance goals with agreeableness change score (current-self) is not significantly different from zero, r = 0.011, p = 0.605.

3.7.1.8 Agreeableness - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_ideal_specif_hyp5 <- '
agree_t1 =~ 1*bf06_02_t1 + lamb2*bf06_07_t1 + lamb3*bf06_12_t1 + lamb4*bf06_17_t1 + lamb5*bf06_22_t1 + lamb6*bf06_27_t1 + lamb7*bf06_32_t1 + lamb8*bf06_37_t1 + lamb9*bf06_42_t1 + lamb10*bf06_47_t1 + lamb11*bf06_52_t1 + lamb12*bf06_57_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*bf06_02_t2 + lamb2*bf06_07_t2 + lamb3*bf06_12_t2 + lamb4*bf06_17_t2 + lamb5*bf06_22_t2 + lamb6*bf06_27_t2 + lamb7*bf06_32_t2 + lamb8*bf06_37_t2 + lamb9*bf06_42_t2 + lamb10*bf06_47_t2 + lamb11*bf06_52_t2 + lamb12*bf06_57_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

goals =~ 1*sa07_04_t1 + sa07_05_t1 + sa07_06_t1 # latent acceptance goal variable (three facets per trait)

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf06_02_t1 ~~ bf06_02_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_07_t1 ~~ bf06_07_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_12_t1 ~~ bf06_12_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_17_t1 ~~ bf06_17_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_22_t1 ~~ bf06_22_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_27_t1 ~~ bf06_27_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_32_t1 ~~ bf06_32_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_37_t1 ~~ bf06_37_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_42_t1 ~~ bf06_42_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_47_t1 ~~ bf06_47_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_52_t1 ~~ bf06_52_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_57_t1 ~~ bf06_57_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_02_t1 ~~ res1*bf06_02_t1   # This allows residual variance on indicator X1 at T1 
bf06_07_t1 ~~ res2*bf06_07_t1   # This allows residual variance on indicator X2 at T1
bf06_12_t1 ~~ res3*bf06_12_t1   # This allows residual variance on indicator X3 at T1
bf06_17_t1 ~~ res4*bf06_17_t1   # This allows residual variance on indicator X4 at T1
bf06_22_t1 ~~ res5*bf06_22_t1   # This allows residual variance on indicator X5 at T1
bf06_27_t1 ~~ res6*bf06_27_t1   # This allows residual variance on indicator X6 at T1 
bf06_32_t1 ~~ res7*bf06_32_t1   # This allows residual variance on indicator X7 at T1
bf06_37_t1 ~~ res8*bf06_37_t1   # This allows residual variance on indicator X8 at T1
bf06_42_t1 ~~ res9*bf06_42_t1   # This allows residual variance on indicator X9 at T1
bf06_47_t1 ~~ res10*bf06_47_t1  # This allows residual variance on indicator X10 at T1
bf06_52_t1 ~~ res11*bf06_52_t1  # This allows residual variance on indicator X11 at T1
bf06_57_t1 ~~ res12*bf06_57_t1  # This allows residual variance on indicator X12 at T1

bf06_02_t2 ~~ res1*bf06_02_t2  # This allows residual variance on indicator X1 at T2 
bf06_07_t2 ~~ res2*bf06_07_t2  # This allows residual variance on indicator X2 at T2 
bf06_12_t2 ~~ res3*bf06_12_t2  # This allows residual variance on indicator X3 at T2
bf06_17_t2 ~~ res4*bf06_17_t2  # This allows residual variance on indicator X4 at T2
bf06_22_t2 ~~ res5*bf06_22_t2  # This allows residual variance on indicator X5 at T2
bf06_27_t2 ~~ res6*bf06_27_t2  # This allows residual variance on indicator X6 at T2 
bf06_32_t2 ~~ res7*bf06_32_t2  # This allows residual variance on indicator X7 at T2 
bf06_37_t2 ~~ res8*bf06_37_t2  # This allows residual variance on indicator X8 at T2
bf06_42_t2 ~~ res9*bf06_42_t2  # This allows residual variance on indicator X9 at T2
bf06_47_t2 ~~ res10*bf06_47_t2 # This allows residual variance on indicator X10 at T2
bf06_52_t2 ~~ res11*bf06_52_t2 # This allows residual variance on indicator X11 at T2
bf06_57_t2 ~~ res12*bf06_57_t2 # This allows residual variance on indicator X12 at T2

bf06_02_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_07_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_12_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_17_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_22_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_27_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_32_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_37_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_42_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_47_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_52_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_57_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_02_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_07_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_12_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_17_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_22_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_27_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_32_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_37_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_42_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_47_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_52_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_57_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_04_t1 ~~ sa07_04_t1
sa07_05_t1 ~~ sa07_05_t1
sa07_06_t1 ~~ sa07_06_t1

sa07_04_t1 ~ 1
sa07_05_t1 ~ 1
sa07_06_t1 ~ 1
'
fit_mi_lcs_agree_ideal_specif_hyp5 <- lavaan(mi_lcs_agree_ideal_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 61 21461.5 21688.24 0.919 0.04 0.056
# parameters of interest
params_lcs_agree_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_agree_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "goals ~~ d_agree_1", "goals ~~ goals", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 0.948 NA NA
d_agree_1 =~ agree_t2 1.000 0.680 NA NA
d_agree_1 ~1 0.808 2.193 3.374 0.001
agree_t1 ~1 4.282 8.347 95.747 0.000
d_agree_1 ~~ d_agree_1 0.125 0.921 4.829 0.000
d_agree_1 ~ agree_t1 -0.201 -0.280 -3.660 0.000
goals ~~ d_agree_1 -0.009 -0.030 -0.332 0.740
goals ~~ goals 0.649 1.000 4.335 0.000

Correlation of specific, facet-level acceptance goals with agreeableness change score (ideal-self) is not significantly different from zero, r = -0.009, p = 0.74.

3.7.1.9 Conscientiousness - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_curr_hyp5 <- '
consc_t1 =~ 1*bf05_03_t1 + lamb2*bf05_08_t1 + lamb3*bf05_13_t1 + lamb4*bf05_18_t1 + lamb5*bf05_23_t1 + lamb6*bf05_28_t1 + lamb7*bf05_33_t1 + lamb8*bf05_38_t1 + lamb9*bf05_43_t1 + lamb10*bf05_48_t1 + lamb11*bf05_53_t1 + lamb12*bf05_58_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*bf05_03_t2 + lamb2*bf05_08_t2 + lamb3*bf05_13_t2 + lamb4*bf05_18_t2 + lamb5*bf05_23_t2 + lamb6*bf05_28_t2 + lamb7*bf05_33_t2 + lamb8*bf05_38_t2 + lamb9*bf05_43_t2 + lamb10*bf05_48_t2 + lamb11*bf05_53_t2 + lamb12*bf05_58_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf05_03_t1 ~~ bf05_03_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_08_t1 ~~ bf05_08_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_13_t1 ~~ bf05_13_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_18_t1 ~~ bf05_18_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_23_t1 ~~ bf05_23_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_28_t1 ~~ bf05_28_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_33_t1 ~~ bf05_33_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_38_t1 ~~ bf05_38_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_43_t1 ~~ bf05_43_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_48_t1 ~~ bf05_48_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_53_t1 ~~ bf05_53_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_58_t1 ~~ bf05_58_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_03_t1 ~~ res1*bf05_03_t1   # This allows residual variance on indicator X1 at T1 
bf05_08_t1 ~~ res2*bf05_08_t1   # This allows residual variance on indicator X2 at T1
bf05_13_t1 ~~ res3*bf05_13_t1   # This allows residual variance on indicator X3 at T1
bf05_18_t1 ~~ res4*bf05_18_t1   # This allows residual variance on indicator X4 at T1
bf05_23_t1 ~~ res5*bf05_23_t1   # This allows residual variance on indicator X5 at T1
bf05_28_t1 ~~ res6*bf05_28_t1   # This allows residual variance on indicator X6 at T1 
bf05_33_t1 ~~ res7*bf05_33_t1   # This allows residual variance on indicator X7 at T1
bf05_38_t1 ~~ res8*bf05_38_t1   # This allows residual variance on indicator X8 at T1
bf05_43_t1 ~~ res9*bf05_43_t1   # This allows residual variance on indicator X9 at T1
bf05_48_t1 ~~ res10*bf05_48_t1  # This allows residual variance on indicator X10 at T1
bf05_53_t1 ~~ res11*bf05_53_t1  # This allows residual variance on indicator X11 at T1
bf05_58_t1 ~~ res12*bf05_58_t1  # This allows residual variance on indicator X12 at T1

bf05_03_t2 ~~ res1*bf05_03_t2  # This allows residual variance on indicator X1 at T2 
bf05_08_t2 ~~ res2*bf05_08_t2  # This allows residual variance on indicator X2 at T2 
bf05_13_t2 ~~ res3*bf05_13_t2  # This allows residual variance on indicator X3 at T2
bf05_18_t2 ~~ res4*bf05_18_t2  # This allows residual variance on indicator X4 at T2
bf05_23_t2 ~~ res5*bf05_23_t2  # This allows residual variance on indicator X5 at T2
bf05_28_t2 ~~ res6*bf05_28_t2  # This allows residual variance on indicator X6 at T2 
bf05_33_t2 ~~ res7*bf05_33_t2  # This allows residual variance on indicator X7 at T2 
bf05_38_t2 ~~ res8*bf05_38_t2  # This allows residual variance on indicator X8 at T2
bf05_43_t2 ~~ res9*bf05_43_t2  # This allows residual variance on indicator X9 at T2
bf05_48_t2 ~~ res10*bf05_48_t2 # This allows residual variance on indicator X10 at T2
bf05_53_t2 ~~ res11*bf05_53_t2 # This allows residual variance on indicator X11 at T2
bf05_58_t2 ~~ res12*bf05_58_t2 # This allows residual variance on indicator X12 at T2

bf05_03_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_08_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_13_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_18_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_23_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_28_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_33_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_38_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_43_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_48_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_53_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_58_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_03_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_08_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_13_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_18_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_23_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_28_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_33_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_38_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_43_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_48_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_53_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_58_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_consc_curr_hyp5 <- lavaan(mi_lcs_consc_curr_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 54 20258.08 20458.79 0.913 0.062 0.064
# parameters of interest
params_lcs_consc_curr_hyp5 <- broom::tidy(fit_mi_lcs_consc_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                     "d_consc_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                     "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.041 NA NA
d_consc_1 =~ consc_t2 1.000 0.462 NA NA
d_consc_1 ~1 0.208 0.429 1.938 0.053
consc_t1 ~1 2.989 2.729 38.205 0.000
d_consc_1 ~~ d_consc_1 0.214 0.905 4.927 0.000
d_consc_1 ~ consc_t1 -0.137 -0.309 -3.682 0.000
d_consc_1 ~~ sa06_01_t1 0.004 0.009 0.137 0.891
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.188 4.397 75.657 0.000

Correlation of general acceptance goal with conscientiousness change score (current-self) is not significantly different from zero, r = 0.004, p = 0.891.

3.7.1.10 Conscientiousness - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_ideal_hyp5 <- '
consc_t1 =~ 1*bf06_03_t1 + lamb2*bf06_08_t1 + lamb3*bf06_13_t1 + lamb4*bf06_18_t1 + lamb5*bf06_23_t1 + lamb6*bf06_28_t1 + lamb7*bf06_33_t1 + lamb8*bf06_38_t1 + lamb9*bf06_43_t1 + lamb10*bf06_48_t1 + lamb11*bf06_53_t1 + lamb12*bf06_58_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*bf06_03_t2 + lamb2*bf06_08_t2 + lamb3*bf06_13_t2 + lamb4*bf06_18_t2 + lamb5*bf06_23_t2 + lamb6*bf06_28_t2 + lamb7*bf06_33_t2 + lamb8*bf06_38_t2 + lamb9*bf06_43_t2 + lamb10*bf06_48_t2 + lamb11*bf06_53_t2 + lamb12*bf06_58_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf06_03_t1 ~~ bf06_03_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_08_t1 ~~ bf06_08_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_13_t1 ~~ bf06_13_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_18_t1 ~~ bf06_18_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_23_t1 ~~ bf06_23_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_28_t1 ~~ bf06_28_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_33_t1 ~~ bf06_33_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_38_t1 ~~ bf06_38_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_43_t1 ~~ bf06_43_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_48_t1 ~~ bf06_48_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_53_t1 ~~ bf06_53_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_58_t1 ~~ bf06_58_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_03_t1 ~~ res1*bf06_03_t1   # This allows residual variance on indicator X1 at T1 
bf06_08_t1 ~~ res2*bf06_08_t1   # This allows residual variance on indicator X2 at T1
bf06_13_t1 ~~ res3*bf06_13_t1   # This allows residual variance on indicator X3 at T1
bf06_18_t1 ~~ res4*bf06_18_t1   # This allows residual variance on indicator X4 at T1
bf06_23_t1 ~~ res5*bf06_23_t1   # This allows residual variance on indicator X5 at T1
bf06_28_t1 ~~ res6*bf06_28_t1   # This allows residual variance on indicator X6 at T1 
bf06_33_t1 ~~ res7*bf06_33_t1   # This allows residual variance on indicator X7 at T1
bf06_38_t1 ~~ res8*bf06_38_t1   # This allows residual variance on indicator X8 at T1
bf06_43_t1 ~~ res9*bf06_43_t1   # This allows residual variance on indicator X9 at T1
bf06_48_t1 ~~ res10*bf06_48_t1  # This allows residual variance on indicator X10 at T1
bf06_53_t1 ~~ res11*bf06_53_t1  # This allows residual variance on indicator X11 at T1
bf06_58_t1 ~~ res12*bf06_58_t1  # This allows residual variance on indicator X12 at T1

bf06_03_t2 ~~ res1*bf06_03_t2  # This allows residual variance on indicator X1 at T2 
bf06_08_t2 ~~ res2*bf06_08_t2  # This allows residual variance on indicator X2 at T2 
bf06_13_t2 ~~ res3*bf06_13_t2  # This allows residual variance on indicator X3 at T2
bf06_18_t2 ~~ res4*bf06_18_t2  # This allows residual variance on indicator X4 at T2
bf06_23_t2 ~~ res5*bf06_23_t2  # This allows residual variance on indicator X5 at T2
bf06_28_t2 ~~ res6*bf06_28_t2  # This allows residual variance on indicator X6 at T2 
bf06_33_t2 ~~ res7*bf06_33_t2  # This allows residual variance on indicator X7 at T2 
bf06_38_t2 ~~ res8*bf06_38_t2  # This allows residual variance on indicator X8 at T2
bf06_43_t2 ~~ res9*bf06_43_t2  # This allows residual variance on indicator X9 at T2
bf06_48_t2 ~~ res10*bf06_48_t2 # This allows residual variance on indicator X10 at T2
bf06_53_t2 ~~ res11*bf06_53_t2 # This allows residual variance on indicator X11 at T2
bf06_58_t2 ~~ res12*bf06_58_t2 # This allows residual variance on indicator X12 at T2

bf06_03_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_08_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_13_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_18_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_23_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_28_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_33_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_38_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_43_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_48_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_53_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_58_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_03_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_08_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_13_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_18_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_23_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_28_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_33_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_38_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_43_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_48_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_53_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_58_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_consc_ideal_hyp5 <- lavaan(mi_lcs_consc_ideal_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 54 16959.78 17160.5 0.893 0.046 0.06
# parameters of interest
params_lcs_consc_ideal_hyp5 <- broom::tidy(fit_mi_lcs_consc_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 0.929 NA NA
d_consc_1 =~ consc_t2 1.000 0.758 NA NA
d_consc_1 ~1 0.425 1.557 3.376 0.001
consc_t1 ~1 1.687 5.041 36.280 0.000
d_consc_1 ~~ d_consc_1 0.067 0.903 2.829 0.005
d_consc_1 ~ consc_t1 -0.254 -0.311 -3.300 0.001
d_consc_1 ~~ sa06_01_t1 0.002 0.008 0.108 0.914
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.776 0.000

Correlation of general acceptance goal with conscientiousness change score (ideal-self) is not significantly different from zero, r = 0.002, p = 0.914.

3.7.1.11 Conscientiousness - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_curr_specif_hyp5 <- '
consc_t1 =~ 1*bf05_03_t1 + lamb2*bf05_08_t1 + lamb3*bf05_13_t1 + lamb4*bf05_18_t1 + lamb5*bf05_23_t1 + lamb6*bf05_28_t1 + lamb7*bf05_33_t1 + lamb8*bf05_38_t1 + lamb9*bf05_43_t1 + lamb10*bf05_48_t1 + lamb11*bf05_53_t1 + lamb12*bf05_58_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*bf05_03_t2 + lamb2*bf05_08_t2 + lamb3*bf05_13_t2 + lamb4*bf05_18_t2 + lamb5*bf05_23_t2 + lamb6*bf05_28_t2 + lamb7*bf05_33_t2 + lamb8*bf05_38_t2 + lamb9*bf05_43_t2 + lamb10*bf05_48_t2 + lamb11*bf05_53_t2 + lamb12*bf05_58_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

goals =~ 1*sa07_07_t1 + sa07_08_t1 + sa07_09_t1 # latent acceptance goal variable (three facets per trait)

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf05_03_t1 ~~ bf05_03_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_08_t1 ~~ bf05_08_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_13_t1 ~~ bf05_13_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_18_t1 ~~ bf05_18_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_23_t1 ~~ bf05_23_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_28_t1 ~~ bf05_28_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_33_t1 ~~ bf05_33_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_38_t1 ~~ bf05_38_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_43_t1 ~~ bf05_43_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_48_t1 ~~ bf05_48_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_53_t1 ~~ bf05_53_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_58_t1 ~~ bf05_58_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_03_t1 ~~ res1*bf05_03_t1   # This allows residual variance on indicator X1 at T1 
bf05_08_t1 ~~ res2*bf05_08_t1   # This allows residual variance on indicator X2 at T1
bf05_13_t1 ~~ res3*bf05_13_t1   # This allows residual variance on indicator X3 at T1
bf05_18_t1 ~~ res4*bf05_18_t1   # This allows residual variance on indicator X4 at T1
bf05_23_t1 ~~ res5*bf05_23_t1   # This allows residual variance on indicator X5 at T1
bf05_28_t1 ~~ res6*bf05_28_t1   # This allows residual variance on indicator X6 at T1 
bf05_33_t1 ~~ res7*bf05_33_t1   # This allows residual variance on indicator X7 at T1
bf05_38_t1 ~~ res8*bf05_38_t1   # This allows residual variance on indicator X8 at T1
bf05_43_t1 ~~ res9*bf05_43_t1   # This allows residual variance on indicator X9 at T1
bf05_48_t1 ~~ res10*bf05_48_t1  # This allows residual variance on indicator X10 at T1
bf05_53_t1 ~~ res11*bf05_53_t1  # This allows residual variance on indicator X11 at T1
bf05_58_t1 ~~ res12*bf05_58_t1  # This allows residual variance on indicator X12 at T1

bf05_03_t2 ~~ res1*bf05_03_t2  # This allows residual variance on indicator X1 at T2 
bf05_08_t2 ~~ res2*bf05_08_t2  # This allows residual variance on indicator X2 at T2 
bf05_13_t2 ~~ res3*bf05_13_t2  # This allows residual variance on indicator X3 at T2
bf05_18_t2 ~~ res4*bf05_18_t2  # This allows residual variance on indicator X4 at T2
bf05_23_t2 ~~ res5*bf05_23_t2  # This allows residual variance on indicator X5 at T2
bf05_28_t2 ~~ res6*bf05_28_t2  # This allows residual variance on indicator X6 at T2 
bf05_33_t2 ~~ res7*bf05_33_t2  # This allows residual variance on indicator X7 at T2 
bf05_38_t2 ~~ res8*bf05_38_t2  # This allows residual variance on indicator X8 at T2
bf05_43_t2 ~~ res9*bf05_43_t2  # This allows residual variance on indicator X9 at T2
bf05_48_t2 ~~ res10*bf05_48_t2 # This allows residual variance on indicator X10 at T2
bf05_53_t2 ~~ res11*bf05_53_t2 # This allows residual variance on indicator X11 at T2
bf05_58_t2 ~~ res12*bf05_58_t2 # This allows residual variance on indicator X12 at T2

bf05_03_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_08_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_13_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_18_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_23_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_28_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_33_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_38_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_43_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_48_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_53_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_58_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_03_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_08_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_13_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_18_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_23_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_28_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_33_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_38_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_43_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_48_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_53_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_58_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_07_t1 ~~ sa07_07_t1
sa07_08_t1 ~~ sa07_08_t1
sa07_09_t1 ~~ sa07_09_t1

sa07_07_t1 ~ 1
sa07_08_t1 ~ 1
sa07_09_t1 ~ 1
'
fit_mi_lcs_consc_curr_specif_hyp5 <- lavaan(mi_lcs_consc_curr_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 61 22374.89 22601.63 0.87 0.075 0.15
# parameters of interest
params_lcs_consc_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_consc_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "goals ~~ d_consc_1", "goals ~~ goals", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.102 NA NA
d_consc_1 =~ consc_t2 1.000 0.525 NA NA
d_consc_1 ~1 0.402 0.768 2.726 0.006
consc_t1 ~1 2.989 2.725 38.203 0.000
d_consc_1 ~~ d_consc_1 0.224 0.821 4.876 0.000
d_consc_1 ~ consc_t1 -0.202 -0.423 -4.036 0.000
goals ~~ d_consc_1 0.141 0.257 2.308 0.021
goals ~~ goals 1.333 1.000 8.088 0.000

Correlation of specific, facet-level acceptance goals with conscientiousness change score (current-self) is not significantly different from zero, r = 0.141, p = 0.021.

3.7.1.12 Conscientiousness - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_ideal_specif_hyp5 <- '
consc_t1 =~ 1*bf06_03_t1 + lamb2*bf06_08_t1 + lamb3*bf06_13_t1 + lamb4*bf06_18_t1 + lamb5*bf06_23_t1 + lamb6*bf06_28_t1 + lamb7*bf06_33_t1 + lamb8*bf06_38_t1 + lamb9*bf06_43_t1 + lamb10*bf06_48_t1 + lamb11*bf06_53_t1 + lamb12*bf06_58_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*bf06_03_t2 + lamb2*bf06_08_t2 + lamb3*bf06_13_t2 + lamb4*bf06_18_t2 + lamb5*bf06_23_t2 + lamb6*bf06_28_t2 + lamb7*bf06_33_t2 + lamb8*bf06_38_t2 + lamb9*bf06_43_t2 + lamb10*bf06_48_t2 + lamb11*bf06_53_t2 + lamb12*bf06_58_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

goals =~ 1*sa07_07_t1 + sa07_08_t1 + sa07_09_t1 # latent acceptance goal variable (three facets per trait)

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf06_03_t1 ~~ bf06_03_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_08_t1 ~~ bf06_08_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_13_t1 ~~ bf06_13_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_18_t1 ~~ bf06_18_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_23_t1 ~~ bf06_23_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_28_t1 ~~ bf06_28_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_33_t1 ~~ bf06_33_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_38_t1 ~~ bf06_38_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_43_t1 ~~ bf06_43_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_48_t1 ~~ bf06_48_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_53_t1 ~~ bf06_53_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_58_t1 ~~ bf06_58_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_03_t1 ~~ res1*bf06_03_t1   # This allows residual variance on indicator X1 at T1 
bf06_08_t1 ~~ res2*bf06_08_t1   # This allows residual variance on indicator X2 at T1
bf06_13_t1 ~~ res3*bf06_13_t1   # This allows residual variance on indicator X3 at T1
bf06_18_t1 ~~ res4*bf06_18_t1   # This allows residual variance on indicator X4 at T1
bf06_23_t1 ~~ res5*bf06_23_t1   # This allows residual variance on indicator X5 at T1
bf06_28_t1 ~~ res6*bf06_28_t1   # This allows residual variance on indicator X6 at T1 
bf06_33_t1 ~~ res7*bf06_33_t1   # This allows residual variance on indicator X7 at T1
bf06_38_t1 ~~ res8*bf06_38_t1   # This allows residual variance on indicator X8 at T1
bf06_43_t1 ~~ res9*bf06_43_t1   # This allows residual variance on indicator X9 at T1
bf06_48_t1 ~~ res10*bf06_48_t1  # This allows residual variance on indicator X10 at T1
bf06_53_t1 ~~ res11*bf06_53_t1  # This allows residual variance on indicator X11 at T1
bf06_58_t1 ~~ res12*bf06_58_t1  # This allows residual variance on indicator X12 at T1

bf06_03_t2 ~~ res1*bf06_03_t2  # This allows residual variance on indicator X1 at T2 
bf06_08_t2 ~~ res2*bf06_08_t2  # This allows residual variance on indicator X2 at T2 
bf06_13_t2 ~~ res3*bf06_13_t2  # This allows residual variance on indicator X3 at T2
bf06_18_t2 ~~ res4*bf06_18_t2  # This allows residual variance on indicator X4 at T2
bf06_23_t2 ~~ res5*bf06_23_t2  # This allows residual variance on indicator X5 at T2
bf06_28_t2 ~~ res6*bf06_28_t2  # This allows residual variance on indicator X6 at T2 
bf06_33_t2 ~~ res7*bf06_33_t2  # This allows residual variance on indicator X7 at T2 
bf06_38_t2 ~~ res8*bf06_38_t2  # This allows residual variance on indicator X8 at T2
bf06_43_t2 ~~ res9*bf06_43_t2  # This allows residual variance on indicator X9 at T2
bf06_48_t2 ~~ res10*bf06_48_t2 # This allows residual variance on indicator X10 at T2
bf06_53_t2 ~~ res11*bf06_53_t2 # This allows residual variance on indicator X11 at T2
bf06_58_t2 ~~ res12*bf06_58_t2 # This allows residual variance on indicator X12 at T2

bf06_03_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_08_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_13_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_18_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_23_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_28_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_33_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_38_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_43_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_48_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_53_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_58_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_03_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_08_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_13_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_18_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_23_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_28_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_33_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_38_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_43_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_48_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_53_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_58_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_07_t1 ~~ sa07_07_t1
sa07_08_t1 ~~ sa07_08_t1
sa07_09_t1 ~~ sa07_09_t1

sa07_07_t1 ~ 1
sa07_08_t1 ~ 1
sa07_09_t1 ~ 1
'
fit_mi_lcs_consc_ideal_specif_hyp5 <- lavaan(mi_lcs_consc_ideal_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 61 19080.96 19307.7 0.905 0.043 0.06
# parameters of interest
params_lcs_consc_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_consc_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "goals ~~ d_consc_1", "goals ~~ goals", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 0.934 NA NA
d_consc_1 =~ consc_t2 1.000 0.765 NA NA
d_consc_1 ~1 0.439 1.596 3.534 0.000
consc_t1 ~1 1.687 5.023 36.275 0.000
d_consc_1 ~~ d_consc_1 0.068 0.897 2.828 0.005
d_consc_1 ~ consc_t1 -0.262 -0.320 -3.455 0.001
goals ~~ d_consc_1 0.034 0.114 1.422 0.155
goals ~~ goals 1.321 1.000 7.873 0.000

The correlation of specific, facet-level acceptance goals with the conscientiousness change score (ideal-self) is significantly different from zero, r = 0.034, p = 0.155.

3.7.1.13 Neuroticism - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_curr_hyp5 <- '
neuro_t1 =~ 1*bf05_04_t1 + lamb2*bf05_09_t1 + lamb3*bf05_14_t1 + lamb4*bf05_19_t1 + lamb5*bf05_24_t1 + lamb6*bf05_29_t1 + lamb7*bf05_34_t1 + lamb8*bf05_39_t1 + lamb9*bf05_44_t1 + lamb10*bf05_49_t1 + lamb11*bf05_54_t1 + lamb12*bf05_59_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*bf05_04_t2 + lamb2*bf05_09_t2 + lamb3*bf05_14_t2 + lamb4*bf05_19_t2 + lamb5*bf05_24_t2 + lamb6*bf05_29_t2 + lamb7*bf05_34_t2 + lamb8*bf05_39_t2 + lamb9*bf05_44_t2 + lamb10*bf05_49_t2 + lamb11*bf05_54_t2 + lamb12*bf05_59_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf05_04_t1 ~~ bf05_04_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_09_t1 ~~ bf05_09_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_14_t1 ~~ bf05_14_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_19_t1 ~~ bf05_19_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_24_t1 ~~ bf05_24_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_29_t1 ~~ bf05_29_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_34_t1 ~~ bf05_34_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_39_t1 ~~ bf05_39_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_44_t1 ~~ bf05_44_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_49_t1 ~~ bf05_49_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_54_t1 ~~ bf05_54_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_59_t1 ~~ bf05_59_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_04_t1 ~~ res1*bf05_04_t1   # This allows residual variance on indicator X1 at T1 
bf05_09_t1 ~~ res2*bf05_09_t1   # This allows residual variance on indicator X2 at T1
bf05_14_t1 ~~ res3*bf05_14_t1   # This allows residual variance on indicator X3 at T1
bf05_19_t1 ~~ res4*bf05_19_t1   # This allows residual variance on indicator X4 at T1
bf05_24_t1 ~~ res5*bf05_24_t1   # This allows residual variance on indicator X5 at T1
bf05_29_t1 ~~ res6*bf05_29_t1   # This allows residual variance on indicator X6 at T1 
bf05_34_t1 ~~ res7*bf05_34_t1   # This allows residual variance on indicator X7 at T1
bf05_39_t1 ~~ res8*bf05_39_t1   # This allows residual variance on indicator X8 at T1
bf05_44_t1 ~~ res9*bf05_44_t1   # This allows residual variance on indicator X9 at T1
bf05_49_t1 ~~ res10*bf05_49_t1  # This allows residual variance on indicator X10 at T1
bf05_54_t1 ~~ res11*bf05_54_t1  # This allows residual variance on indicator X11 at T1
bf05_59_t1 ~~ res12*bf05_59_t1  # This allows residual variance on indicator X12 at T1

bf05_04_t2 ~~ res1*bf05_04_t2  # This allows residual variance on indicator X1 at T2 
bf05_09_t2 ~~ res2*bf05_09_t2  # This allows residual variance on indicator X2 at T2 
bf05_14_t2 ~~ res3*bf05_14_t2  # This allows residual variance on indicator X3 at T2
bf05_19_t2 ~~ res4*bf05_19_t2  # This allows residual variance on indicator X4 at T2
bf05_24_t2 ~~ res5*bf05_24_t2  # This allows residual variance on indicator X5 at T2
bf05_29_t2 ~~ res6*bf05_29_t2  # This allows residual variance on indicator X6 at T2 
bf05_34_t2 ~~ res7*bf05_34_t2  # This allows residual variance on indicator X7 at T2 
bf05_39_t2 ~~ res8*bf05_39_t2  # This allows residual variance on indicator X8 at T2
bf05_44_t2 ~~ res9*bf05_44_t2  # This allows residual variance on indicator X9 at T2
bf05_49_t2 ~~ res10*bf05_49_t2 # This allows residual variance on indicator X10 at T2
bf05_54_t2 ~~ res11*bf05_54_t2 # This allows residual variance on indicator X11 at T2
bf05_59_t2 ~~ res12*bf05_59_t2 # This allows residual variance on indicator X12 at T2

bf05_04_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_09_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_14_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_19_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_24_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_29_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_34_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_39_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_44_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_49_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_54_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_59_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_04_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_09_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_14_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_19_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_24_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_29_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_34_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_39_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_44_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_49_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_54_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_59_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_neuro_curr_hyp5 <- lavaan(mi_lcs_neuro_curr_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 54 21011.62 21212.34 0.894 0.07 0.075
# parameters of interest
params_lcs_neuro_curr_hyp5 <- broom::tidy(fit_mi_lcs_neuro_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                     "d_neuro_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                     "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 0.998 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.555 NA NA
d_neuro_1 ~1 0.619 1.223 5.302 0.0
neuro_t1 ~1 2.652 2.913 37.953 0.0
d_neuro_1 ~~ d_neuro_1 0.237 0.924 6.929 0.0
d_neuro_1 ~ neuro_t1 -0.153 -0.275 -3.597 0.0
d_neuro_1 ~~ sa06_01_t1 0.056 0.120 1.647 0.1
sa06_01_t1 ~~ sa06_01_t1 0.908 1.000 9.669 0.0
sa06_01_t1 ~1 4.190 4.398 76.012 0.0

Correlation of general acceptance goal with neuroticism change score (current-self) is not significantly different from zero, r = 0.056, p = 0.1.

3.7.1.14 Neuroticism - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_ideal_hyp5 <- '
neuro_t1 =~ 1*bf06_04_t1 + lamb2*bf06_09_t1 + lamb3*bf06_14_t1 + lamb4*bf06_19_t1 + lamb5*bf06_24_t1 + lamb6*bf06_29_t1 + lamb7*bf06_34_t1 + lamb8*bf06_39_t1 + lamb9*bf06_44_t1 + lamb10*bf06_49_t1 + lamb11*bf06_54_t1 + lamb12*bf06_59_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*bf06_04_t2 + lamb2*bf06_09_t2 + lamb3*bf06_14_t2 + lamb4*bf06_19_t2 + lamb5*bf06_24_t2 + lamb6*bf06_29_t2 + lamb7*bf06_34_t2 + lamb8*bf06_39_t2 + lamb9*bf06_44_t2 + lamb10*bf06_49_t2 + lamb11*bf06_54_t2 + lamb12*bf06_59_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf06_04_t1 ~~ bf06_04_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_09_t1 ~~ bf06_09_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_14_t1 ~~ bf06_14_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_19_t1 ~~ bf06_19_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_24_t1 ~~ bf06_24_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_29_t1 ~~ bf06_29_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_34_t1 ~~ bf06_34_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_39_t1 ~~ bf06_39_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_44_t1 ~~ bf06_44_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_49_t1 ~~ bf06_49_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_54_t1 ~~ bf06_54_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_59_t1 ~~ bf06_59_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_04_t1 ~~ res1*bf06_04_t1   # This allows residual variance on indicator X1 at T1 
bf06_09_t1 ~~ res2*bf06_09_t1   # This allows residual variance on indicator X2 at T1
bf06_14_t1 ~~ res3*bf06_14_t1   # This allows residual variance on indicator X3 at T1
bf06_19_t1 ~~ res4*bf06_19_t1   # This allows residual variance on indicator X4 at T1
bf06_24_t1 ~~ res5*bf06_24_t1   # This allows residual variance on indicator X5 at T1
bf06_29_t1 ~~ res6*bf06_29_t1   # This allows residual variance on indicator X6 at T1 
bf06_34_t1 ~~ res7*bf06_34_t1   # This allows residual variance on indicator X7 at T1
bf06_39_t1 ~~ res8*bf06_39_t1   # This allows residual variance on indicator X8 at T1
bf06_44_t1 ~~ res9*bf06_44_t1   # This allows residual variance on indicator X9 at T1
bf06_49_t1 ~~ res10*bf06_49_t1  # This allows residual variance on indicator X10 at T1
bf06_54_t1 ~~ res11*bf06_54_t1  # This allows residual variance on indicator X11 at T1
bf06_59_t1 ~~ res12*bf06_59_t1  # This allows residual variance on indicator X12 at T1

bf06_04_t2 ~~ res1*bf06_04_t2  # This allows residual variance on indicator X1 at T2 
bf06_09_t2 ~~ res2*bf06_09_t2  # This allows residual variance on indicator X2 at T2 
bf06_14_t2 ~~ res3*bf06_14_t2  # This allows residual variance on indicator X3 at T2
bf06_19_t2 ~~ res4*bf06_19_t2  # This allows residual variance on indicator X4 at T2
bf06_24_t2 ~~ res5*bf06_24_t2  # This allows residual variance on indicator X5 at T2
bf06_29_t2 ~~ res6*bf06_29_t2  # This allows residual variance on indicator X6 at T2 
bf06_34_t2 ~~ res7*bf06_34_t2  # This allows residual variance on indicator X7 at T2 
bf06_39_t2 ~~ res8*bf06_39_t2  # This allows residual variance on indicator X8 at T2
bf06_44_t2 ~~ res9*bf06_44_t2  # This allows residual variance on indicator X9 at T2
bf06_49_t2 ~~ res10*bf06_49_t2 # This allows residual variance on indicator X10 at T2
bf06_54_t2 ~~ res11*bf06_54_t2 # This allows residual variance on indicator X11 at T2
bf06_59_t2 ~~ res12*bf06_59_t2 # This allows residual variance on indicator X12 at T2

bf06_04_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_09_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_14_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_19_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_24_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_29_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_34_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_39_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_44_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_49_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_54_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_59_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_04_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_09_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_14_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_19_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_24_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_29_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_34_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_39_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_44_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_49_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_54_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_59_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_neuro_ideal_hyp5 <- lavaan(mi_lcs_neuro_ideal_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 54 18551.51 18752.23 0.857 0.047 0.063
# parameters of interest
params_lcs_neuro_ideal_hyp5 <- broom::tidy(fit_mi_lcs_neuro_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 0.862 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.773 NA NA
d_neuro_1 ~1 1.024 4.130 2.399 0.016
neuro_t1 ~1 4.571 16.519 151.249 0.000
d_neuro_1 ~~ d_neuro_1 0.057 0.935 3.270 0.001
d_neuro_1 ~ neuro_t1 -0.229 -0.256 -2.487 0.013
d_neuro_1 ~~ sa06_01_t1 0.023 0.101 1.415 0.157
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.188 4.397 75.754 0.000

Correlation of general acceptance goal with neuroticism change score (ideal-self) is not significantly different from zero, r = 0.023, p = 0.157.

3.7.1.15 Neuroticism - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_curr_specif_hyp5 <- '
neuro_t1 =~ 1*bf05_04_t1 + lamb2*bf05_09_t1 + lamb3*bf05_14_t1 + lamb4*bf05_19_t1 + lamb5*bf05_24_t1 + lamb6*bf05_29_t1 + lamb7*bf05_34_t1 + lamb8*bf05_39_t1 + lamb9*bf05_44_t1 + lamb10*bf05_49_t1 + lamb11*bf05_54_t1 + lamb12*bf05_59_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*bf05_04_t2 + lamb2*bf05_09_t2 + lamb3*bf05_14_t2 + lamb4*bf05_19_t2 + lamb5*bf05_24_t2 + lamb6*bf05_29_t2 + lamb7*bf05_34_t2 + lamb8*bf05_39_t2 + lamb9*bf05_44_t2 + lamb10*bf05_49_t2 + lamb11*bf05_54_t2 + lamb12*bf05_59_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

goals =~ 1*sa07_10_t1 + sa07_11_t1 + sa07_12_t1 # latent acceptance goal variable (three facets per trait)

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf05_04_t1 ~~ bf05_04_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_09_t1 ~~ bf05_09_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_14_t1 ~~ bf05_14_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_19_t1 ~~ bf05_19_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_24_t1 ~~ bf05_24_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_29_t1 ~~ bf05_29_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_34_t1 ~~ bf05_34_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_39_t1 ~~ bf05_39_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_44_t1 ~~ bf05_44_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_49_t1 ~~ bf05_49_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_54_t1 ~~ bf05_54_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_59_t1 ~~ bf05_59_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_04_t1 ~~ res1*bf05_04_t1   # This allows residual variance on indicator X1 at T1 
bf05_09_t1 ~~ res2*bf05_09_t1   # This allows residual variance on indicator X2 at T1
bf05_14_t1 ~~ res3*bf05_14_t1   # This allows residual variance on indicator X3 at T1
bf05_19_t1 ~~ res4*bf05_19_t1   # This allows residual variance on indicator X4 at T1
bf05_24_t1 ~~ res5*bf05_24_t1   # This allows residual variance on indicator X5 at T1
bf05_29_t1 ~~ res6*bf05_29_t1   # This allows residual variance on indicator X6 at T1 
bf05_34_t1 ~~ res7*bf05_34_t1   # This allows residual variance on indicator X7 at T1
bf05_39_t1 ~~ res8*bf05_39_t1   # This allows residual variance on indicator X8 at T1
bf05_44_t1 ~~ res9*bf05_44_t1   # This allows residual variance on indicator X9 at T1
bf05_49_t1 ~~ res10*bf05_49_t1  # This allows residual variance on indicator X10 at T1
bf05_54_t1 ~~ res11*bf05_54_t1  # This allows residual variance on indicator X11 at T1
bf05_59_t1 ~~ res12*bf05_59_t1  # This allows residual variance on indicator X12 at T1

bf05_04_t2 ~~ res1*bf05_04_t2  # This allows residual variance on indicator X1 at T2 
bf05_09_t2 ~~ res2*bf05_09_t2  # This allows residual variance on indicator X2 at T2 
bf05_14_t2 ~~ res3*bf05_14_t2  # This allows residual variance on indicator X3 at T2
bf05_19_t2 ~~ res4*bf05_19_t2  # This allows residual variance on indicator X4 at T2
bf05_24_t2 ~~ res5*bf05_24_t2  # This allows residual variance on indicator X5 at T2
bf05_29_t2 ~~ res6*bf05_29_t2  # This allows residual variance on indicator X6 at T2 
bf05_34_t2 ~~ res7*bf05_34_t2  # This allows residual variance on indicator X7 at T2 
bf05_39_t2 ~~ res8*bf05_39_t2  # This allows residual variance on indicator X8 at T2
bf05_44_t2 ~~ res9*bf05_44_t2  # This allows residual variance on indicator X9 at T2
bf05_49_t2 ~~ res10*bf05_49_t2 # This allows residual variance on indicator X10 at T2
bf05_54_t2 ~~ res11*bf05_54_t2 # This allows residual variance on indicator X11 at T2
bf05_59_t2 ~~ res12*bf05_59_t2 # This allows residual variance on indicator X12 at T2

bf05_04_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_09_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_14_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_19_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_24_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_29_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_34_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_39_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_44_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_49_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_54_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_59_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_04_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_09_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_14_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_19_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_24_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_29_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_34_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_39_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_44_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_49_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_54_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_59_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_10_t1 ~~ sa07_10_t1
sa07_11_t1 ~~ sa07_11_t1
sa07_12_t1 ~~ sa07_12_t1

sa07_10_t1 ~ 1
sa07_11_t1 ~ 1
sa07_12_t1 ~ 1
'
fit_mi_lcs_neuro_curr_specif_hyp5 <- lavaan(mi_lcs_neuro_curr_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 61 23169.21 23395.95 0.87 0.074 0.107
# parameters of interest
params_lcs_neuro_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_neuro_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "goals ~~ d_neuro_1", "goals ~~ goals", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.024 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.582 NA NA
d_neuro_1 ~1 0.704 1.361 5.043 0.000
neuro_t1 ~1 2.652 2.915 37.951 0.000
d_neuro_1 ~~ d_neuro_1 0.239 0.894 6.922 0.000
d_neuro_1 ~ neuro_t1 -0.185 -0.325 -3.692 0.000
goals ~~ d_neuro_1 -0.035 -0.082 -0.894 0.371
goals ~~ goals 0.771 1.000 3.813 0.000

Correlation of specific, facet-level acceptance goals with neuroticism change score (current-self) is significantly different from zero, r = -0.035, p = 0.371.

3.7.1.16 Neuroticism - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_ideal_specif_hyp5 <- '
neuro_t1 =~ 1*bf06_04_t1 + lamb2*bf06_09_t1 + lamb3*bf06_14_t1 + lamb4*bf06_19_t1 + lamb5*bf06_24_t1 + lamb6*bf06_29_t1 + lamb7*bf06_34_t1 + lamb8*bf06_39_t1 + lamb9*bf06_44_t1 + lamb10*bf06_49_t1 + lamb11*bf06_54_t1 + lamb12*bf06_59_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*bf06_04_t2 + lamb2*bf06_09_t2 + lamb3*bf06_14_t2 + lamb4*bf06_19_t2 + lamb5*bf06_24_t2 + lamb6*bf06_29_t2 + lamb7*bf06_34_t2 + lamb8*bf06_39_t2 + lamb9*bf06_44_t2 + lamb10*bf06_49_t2 + lamb11*bf06_54_t2 + lamb12*bf06_59_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

goals =~ 1*sa07_10_t1 + sa07_11_t1 + sa07_12_t1 # latent acceptance goal variable (three facets per trait)

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf06_04_t1 ~~ bf06_04_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_09_t1 ~~ bf06_09_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_14_t1 ~~ bf06_14_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_19_t1 ~~ bf06_19_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_24_t1 ~~ bf06_24_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_29_t1 ~~ bf06_29_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_34_t1 ~~ bf06_34_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_39_t1 ~~ bf06_39_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_44_t1 ~~ bf06_44_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_49_t1 ~~ bf06_49_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_54_t1 ~~ bf06_54_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_59_t1 ~~ bf06_59_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_04_t1 ~~ res1*bf06_04_t1   # This allows residual variance on indicator X1 at T1 
bf06_09_t1 ~~ res2*bf06_09_t1   # This allows residual variance on indicator X2 at T1
bf06_14_t1 ~~ res3*bf06_14_t1   # This allows residual variance on indicator X3 at T1
bf06_19_t1 ~~ res4*bf06_19_t1   # This allows residual variance on indicator X4 at T1
bf06_24_t1 ~~ res5*bf06_24_t1   # This allows residual variance on indicator X5 at T1
bf06_29_t1 ~~ res6*bf06_29_t1   # This allows residual variance on indicator X6 at T1 
bf06_34_t1 ~~ res7*bf06_34_t1   # This allows residual variance on indicator X7 at T1
bf06_39_t1 ~~ res8*bf06_39_t1   # This allows residual variance on indicator X8 at T1
bf06_44_t1 ~~ res9*bf06_44_t1   # This allows residual variance on indicator X9 at T1
bf06_49_t1 ~~ res10*bf06_49_t1  # This allows residual variance on indicator X10 at T1
bf06_54_t1 ~~ res11*bf06_54_t1  # This allows residual variance on indicator X11 at T1
bf06_59_t1 ~~ res12*bf06_59_t1  # This allows residual variance on indicator X12 at T1

bf06_04_t2 ~~ res1*bf06_04_t2  # This allows residual variance on indicator X1 at T2 
bf06_09_t2 ~~ res2*bf06_09_t2  # This allows residual variance on indicator X2 at T2 
bf06_14_t2 ~~ res3*bf06_14_t2  # This allows residual variance on indicator X3 at T2
bf06_19_t2 ~~ res4*bf06_19_t2  # This allows residual variance on indicator X4 at T2
bf06_24_t2 ~~ res5*bf06_24_t2  # This allows residual variance on indicator X5 at T2
bf06_29_t2 ~~ res6*bf06_29_t2  # This allows residual variance on indicator X6 at T2 
bf06_34_t2 ~~ res7*bf06_34_t2  # This allows residual variance on indicator X7 at T2 
bf06_39_t2 ~~ res8*bf06_39_t2  # This allows residual variance on indicator X8 at T2
bf06_44_t2 ~~ res9*bf06_44_t2  # This allows residual variance on indicator X9 at T2
bf06_49_t2 ~~ res10*bf06_49_t2 # This allows residual variance on indicator X10 at T2
bf06_54_t2 ~~ res11*bf06_54_t2 # This allows residual variance on indicator X11 at T2
bf06_59_t2 ~~ res12*bf06_59_t2 # This allows residual variance on indicator X12 at T2

bf06_04_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_09_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_14_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_19_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_24_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_29_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_34_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_39_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_44_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_49_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_54_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_59_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_04_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_09_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_14_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_19_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_24_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_29_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_34_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_39_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_44_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_49_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_54_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_59_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_10_t1 ~~ sa07_10_t1
sa07_11_t1 ~~ sa07_11_t1
sa07_12_t1 ~~ sa07_12_t1

sa07_10_t1 ~ 1
sa07_11_t1 ~ 1
sa07_12_t1 ~ 1
'
fit_mi_lcs_neuro_ideal_specif_hyp5 <- lavaan(mi_lcs_neuro_ideal_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 61 20700.83 20927.56 0.851 0.048 0.065
# parameters of interest
params_lcs_neuro_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_neuro_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "goals ~~ d_neuro_1", "goals ~~ goals", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 0.860 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.769 NA NA
d_neuro_1 ~1 1.001 4.040 2.408 0.016
neuro_t1 ~1 4.571 16.520 151.281 0.000
d_neuro_1 ~~ d_neuro_1 0.058 0.937 3.295 0.001
d_neuro_1 ~ neuro_t1 -0.224 -0.250 -2.498 0.012
goals ~~ d_neuro_1 -0.041 -0.212 -3.056 0.002
goals ~~ goals 0.657 1.000 3.004 0.003

The correlation of specific, facet-level acceptance goals with the neuroticism change score (ideal-self) is significantly different from zero, r = -0.041, p = 0.002.

3.7.1.17 Openness - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_curr_hyp5 <- '
openn_t1 =~ 1*bf05_05_t1 + lamb2*bf05_10_t1 + lamb3*bf05_15_t1 + lamb4*bf05_20_t1 + lamb5*bf05_25_t1 + lamb6*bf05_30_t1 + lamb7*bf05_35_t1 + lamb8*bf05_40_t1 + lamb9*bf05_45_t1 + lamb10*bf05_50_t1 + lamb11*bf05_55_t1 + lamb12*bf05_60_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*bf05_05_t2 + lamb2*bf05_10_t2 + lamb3*bf05_15_t2 + lamb4*bf05_20_t2 + lamb5*bf05_25_t2 + lamb6*bf05_30_t2 + lamb7*bf05_35_t2 + lamb8*bf05_40_t2 + lamb9*bf05_45_t2 + lamb10*bf05_50_t2 + lamb11*bf05_55_t2 + lamb12*bf05_60_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf05_05_t1 ~~ bf05_05_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_10_t1 ~~ bf05_10_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_15_t1 ~~ bf05_15_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_20_t1 ~~ bf05_20_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_25_t1 ~~ bf05_25_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_30_t1 ~~ bf05_30_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_35_t1 ~~ bf05_35_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_40_t1 ~~ bf05_40_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_45_t1 ~~ bf05_45_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_50_t1 ~~ bf05_50_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_55_t1 ~~ bf05_55_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_60_t1 ~~ bf05_60_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_05_t1 ~~ res1*bf05_05_t1   # This allows residual variance on indicator X1 at T1 
bf05_10_t1 ~~ res2*bf05_10_t1   # This allows residual variance on indicator X2 at T1
bf05_15_t1 ~~ res3*bf05_15_t1   # This allows residual variance on indicator X3 at T1
bf05_20_t1 ~~ res4*bf05_20_t1   # This allows residual variance on indicator X4 at T1
bf05_25_t1 ~~ res5*bf05_25_t1   # This allows residual variance on indicator X5 at T1
bf05_30_t1 ~~ res6*bf05_30_t1   # This allows residual variance on indicator X6 at T1 
bf05_35_t1 ~~ res7*bf05_35_t1   # This allows residual variance on indicator X7 at T1
bf05_40_t1 ~~ res8*bf05_40_t1   # This allows residual variance on indicator X8 at T1
bf05_45_t1 ~~ res9*bf05_45_t1   # This allows residual variance on indicator X9 at T1
bf05_50_t1 ~~ res10*bf05_50_t1  # This allows residual variance on indicator X10 at T1
bf05_55_t1 ~~ res11*bf05_55_t1  # This allows residual variance on indicator X11 at T1
bf05_60_t1 ~~ res12*bf05_60_t1  # This allows residual variance on indicator X12 at T1

bf05_05_t2 ~~ res1*bf05_05_t2  # This allows residual variance on indicator X1 at T2 
bf05_10_t2 ~~ res2*bf05_10_t2  # This allows residual variance on indicator X2 at T2 
bf05_15_t2 ~~ res3*bf05_15_t2  # This allows residual variance on indicator X3 at T2
bf05_20_t2 ~~ res4*bf05_20_t2  # This allows residual variance on indicator X4 at T2
bf05_25_t2 ~~ res5*bf05_25_t2  # This allows residual variance on indicator X5 at T2
bf05_30_t2 ~~ res6*bf05_30_t2  # This allows residual variance on indicator X6 at T2 
bf05_35_t2 ~~ res7*bf05_35_t2  # This allows residual variance on indicator X7 at T2 
bf05_40_t2 ~~ res8*bf05_40_t2  # This allows residual variance on indicator X8 at T2
bf05_45_t2 ~~ res9*bf05_45_t2  # This allows residual variance on indicator X9 at T2
bf05_50_t2 ~~ res10*bf05_50_t2 # This allows residual variance on indicator X10 at T2
bf05_55_t2 ~~ res11*bf05_55_t2 # This allows residual variance on indicator X11 at T2
bf05_60_t2 ~~ res12*bf05_60_t2 # This allows residual variance on indicator X12 at T2

bf05_05_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_10_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_15_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_20_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_25_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_30_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_35_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_40_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_45_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_50_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_55_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_60_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_05_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_10_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_15_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_20_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_25_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_30_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_35_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_40_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_45_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_50_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_55_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_60_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_openn_curr_hyp5 <- lavaan(mi_lcs_openn_curr_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 54 20673.45 20874.17 0.814 0.077 0.088
# parameters of interest
params_lcs_openn_curr_hyp5 <- broom::tidy(fit_mi_lcs_openn_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                     "d_openn_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                     "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.044 NA NA
d_openn_1 =~ openn_t2 1.000 0.591 NA NA
d_openn_1 ~1 0.576 9.890 3.258 0.001
openn_t1 ~1 2.918 28.365 48.287 0.000
d_openn_1 ~~ d_openn_1 0.003 0.874 0.639 0.523
d_openn_1 ~ openn_t1 -0.201 -0.355 -3.370 0.001
d_openn_1 ~~ sa06_01_t1 -0.003 -0.067 -0.791 0.429
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.684 0.000
sa06_01_t1 ~1 4.188 4.397 75.806 0.000

Correlation of general acceptance goal with openness change score (current-self) is not significantly different from zero, r = -0.003, p = 0.429.

3.7.1.18 Openness - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_ideal_hyp5 <- '
openn_t1 =~ 1*bf06_05_t1 + lamb2*bf06_10_t1 + lamb3*bf06_15_t1 + lamb4*bf06_20_t1 + lamb5*bf06_25_t1 + lamb6*bf06_30_t1 + lamb7*bf06_35_t1 + lamb8*bf06_40_t1 + lamb9*bf06_45_t1 + lamb10*bf06_50_t1 + lamb11*bf06_55_t1 + lamb12*bf06_60_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*bf06_05_t2 + lamb2*bf06_10_t2 + lamb3*bf06_15_t2 + lamb4*bf06_20_t2 + lamb5*bf06_25_t2 + lamb6*bf06_30_t2 + lamb7*bf06_35_t2 + lamb8*bf06_40_t2 + lamb9*bf06_45_t2 + lamb10*bf06_50_t2 + lamb11*bf06_55_t2 + lamb12*bf06_60_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

bf06_05_t1 ~~ bf06_05_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_10_t1 ~~ bf06_10_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_15_t1 ~~ bf06_15_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_20_t1 ~~ bf06_20_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_25_t1 ~~ bf06_25_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_30_t1 ~~ bf06_30_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_35_t1 ~~ bf06_35_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_40_t1 ~~ bf06_40_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_45_t1 ~~ bf06_45_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_50_t1 ~~ bf06_50_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_55_t1 ~~ bf06_55_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_60_t1 ~~ bf06_60_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_05_t1 ~~ res1*bf06_05_t1   # This allows residual variance on indicator X1 at T1 
bf06_10_t1 ~~ res2*bf06_10_t1   # This allows residual variance on indicator X2 at T1
bf06_15_t1 ~~ res3*bf06_15_t1   # This allows residual variance on indicator X3 at T1
bf06_20_t1 ~~ res4*bf06_20_t1   # This allows residual variance on indicator X4 at T1
bf06_25_t1 ~~ res5*bf06_25_t1   # This allows residual variance on indicator X5 at T1
bf06_30_t1 ~~ res6*bf06_30_t1   # This allows residual variance on indicator X6 at T1 
bf06_35_t1 ~~ res7*bf06_35_t1   # This allows residual variance on indicator X7 at T1
bf06_40_t1 ~~ res8*bf06_40_t1   # This allows residual variance on indicator X8 at T1
bf06_45_t1 ~~ res9*bf06_45_t1   # This allows residual variance on indicator X9 at T1
bf06_50_t1 ~~ res10*bf06_50_t1  # This allows residual variance on indicator X10 at T1
bf06_55_t1 ~~ res11*bf06_55_t1  # This allows residual variance on indicator X11 at T1
bf06_60_t1 ~~ res12*bf06_60_t1  # This allows residual variance on indicator X12 at T1

bf06_05_t2 ~~ res1*bf06_05_t2  # This allows residual variance on indicator X1 at T2 
bf06_10_t2 ~~ res2*bf06_10_t2  # This allows residual variance on indicator X2 at T2 
bf06_15_t2 ~~ res3*bf06_15_t2  # This allows residual variance on indicator X3 at T2
bf06_20_t2 ~~ res4*bf06_20_t2  # This allows residual variance on indicator X4 at T2
bf06_25_t2 ~~ res5*bf06_25_t2  # This allows residual variance on indicator X5 at T2
bf06_30_t2 ~~ res6*bf06_30_t2  # This allows residual variance on indicator X6 at T2 
bf06_35_t2 ~~ res7*bf06_35_t2  # This allows residual variance on indicator X7 at T2 
bf06_40_t2 ~~ res8*bf06_40_t2  # This allows residual variance on indicator X8 at T2
bf06_45_t2 ~~ res9*bf06_45_t2  # This allows residual variance on indicator X9 at T2
bf06_50_t2 ~~ res10*bf06_50_t2 # This allows residual variance on indicator X10 at T2
bf06_55_t2 ~~ res11*bf06_55_t2 # This allows residual variance on indicator X11 at T2
bf06_60_t2 ~~ res12*bf06_60_t2 # This allows residual variance on indicator X12 at T2

bf06_05_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_10_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_15_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_20_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_25_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_30_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_35_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_40_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_45_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_50_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_55_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_60_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_05_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_10_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_15_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_20_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_25_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_30_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_35_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_40_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_45_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_50_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_55_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_60_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_openn_ideal_hyp5 <- lavaan(mi_lcs_openn_ideal_hyp5, data=df_sbsa_wide_pers_sa, estimator='WLSMV', fixed.x=FALSE, ordered="sa06_01_t1")
# This model did not converge properly (when adding the 'sa06_01_t1' goal variable). Declaring 'sa06_01_t1' as an 
# ordered variable and using the WLSMV estimator (sadly without FIML) worked in the end. Results 
# https://lavaan.ugent.be/tutorial/cat.html
summary(fit_mi_lcs_openn_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
294 54 NA NA 0.946 0.05 0.074
# parameters of interest
params_lcs_openn_ideal_hyp5 <- broom::tidy(fit_mi_lcs_openn_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.891 NA NA
d_openn_1 =~ openn_t2 1.000 0.686 NA NA
d_openn_1 ~1 0.524 16.982 2.391 0.017
openn_t1 ~1 3.135 78.168 42.476 0.000
d_openn_1 ~~ d_openn_1 0.001 0.953 5.856 0.000
d_openn_1 ~ openn_t1 -0.166 -0.216 -2.418 0.016
d_openn_1 ~~ sa06_01_t1 -0.008 -0.272 -2.646 0.008
sa06_01_t1 ~~ sa06_01_t1 1.000 1.000 1.000 0.317
sa06_01_t1 ~1 0.000 0.000 0.000 1.000

The correlation of the general acceptance goal with the openness change score (ideal-self) is significantly different from zero, r = -0.008, p = 0.008. (I had to use the ‘WLSMV’ estimator with the “ordered” argument here to get the model to converge - not sure if this is comparable to the other models since a really small estimate becomes significant here…)

3.7.1.19 Openness - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_curr_specif_hyp5 <- '
openn_t1 =~ 1*bf05_05_t1 + lamb2*bf05_10_t1 + lamb3*bf05_15_t1 + lamb4*bf05_20_t1 + lamb5*bf05_25_t1 + lamb6*bf05_30_t1 + lamb7*bf05_35_t1 + lamb8*bf05_40_t1 + lamb9*bf05_45_t1 + lamb10*bf05_50_t1 + lamb11*bf05_55_t1 + lamb12*bf05_60_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*bf05_05_t2 + lamb2*bf05_10_t2 + lamb3*bf05_15_t2 + lamb4*bf05_20_t2 + lamb5*bf05_25_t2 + lamb6*bf05_30_t2 + lamb7*bf05_35_t2 + lamb8*bf05_40_t2 + lamb9*bf05_45_t2 + lamb10*bf05_50_t2 + lamb11*bf05_55_t2 + lamb12*bf05_60_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

goals =~ 1*sa07_13_t1 + sa07_14_t1 + sa07_15_t1 # latent acceptance goal variable (three facets per trait)

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf05_05_t1 ~~ bf05_05_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf05_10_t1 ~~ bf05_10_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf05_15_t1 ~~ bf05_15_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf05_20_t1 ~~ bf05_20_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf05_25_t1 ~~ bf05_25_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf05_30_t1 ~~ bf05_30_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf05_35_t1 ~~ bf05_35_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf05_40_t1 ~~ bf05_40_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf05_45_t1 ~~ bf05_45_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf05_50_t1 ~~ bf05_50_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf05_55_t1 ~~ bf05_55_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf05_60_t1 ~~ bf05_60_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf05_05_t1 ~~ res1*bf05_05_t1   # This allows residual variance on indicator X1 at T1 
bf05_10_t1 ~~ res2*bf05_10_t1   # This allows residual variance on indicator X2 at T1
bf05_15_t1 ~~ res3*bf05_15_t1   # This allows residual variance on indicator X3 at T1
bf05_20_t1 ~~ res4*bf05_20_t1   # This allows residual variance on indicator X4 at T1
bf05_25_t1 ~~ res5*bf05_25_t1   # This allows residual variance on indicator X5 at T1
bf05_30_t1 ~~ res6*bf05_30_t1   # This allows residual variance on indicator X6 at T1 
bf05_35_t1 ~~ res7*bf05_35_t1   # This allows residual variance on indicator X7 at T1
bf05_40_t1 ~~ res8*bf05_40_t1   # This allows residual variance on indicator X8 at T1
bf05_45_t1 ~~ res9*bf05_45_t1   # This allows residual variance on indicator X9 at T1
bf05_50_t1 ~~ res10*bf05_50_t1  # This allows residual variance on indicator X10 at T1
bf05_55_t1 ~~ res11*bf05_55_t1  # This allows residual variance on indicator X11 at T1
bf05_60_t1 ~~ res12*bf05_60_t1  # This allows residual variance on indicator X12 at T1

bf05_05_t2 ~~ res1*bf05_05_t2  # This allows residual variance on indicator X1 at T2 
bf05_10_t2 ~~ res2*bf05_10_t2  # This allows residual variance on indicator X2 at T2 
bf05_15_t2 ~~ res3*bf05_15_t2  # This allows residual variance on indicator X3 at T2
bf05_20_t2 ~~ res4*bf05_20_t2  # This allows residual variance on indicator X4 at T2
bf05_25_t2 ~~ res5*bf05_25_t2  # This allows residual variance on indicator X5 at T2
bf05_30_t2 ~~ res6*bf05_30_t2  # This allows residual variance on indicator X6 at T2 
bf05_35_t2 ~~ res7*bf05_35_t2  # This allows residual variance on indicator X7 at T2 
bf05_40_t2 ~~ res8*bf05_40_t2  # This allows residual variance on indicator X8 at T2
bf05_45_t2 ~~ res9*bf05_45_t2  # This allows residual variance on indicator X9 at T2
bf05_50_t2 ~~ res10*bf05_50_t2 # This allows residual variance on indicator X10 at T2
bf05_55_t2 ~~ res11*bf05_55_t2 # This allows residual variance on indicator X11 at T2
bf05_60_t2 ~~ res12*bf05_60_t2 # This allows residual variance on indicator X12 at T2

bf05_05_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf05_10_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf05_15_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf05_20_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf05_25_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf05_30_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf05_35_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf05_40_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf05_45_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf05_50_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf05_55_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf05_60_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf05_05_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf05_10_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf05_15_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf05_20_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf05_25_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf05_30_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf05_35_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf05_40_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf05_45_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf05_50_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf05_55_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf05_60_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_13_t1 ~~ sa07_13_t1
sa07_14_t1 ~~ sa07_14_t1
sa07_15_t1 ~~ sa07_15_t1

sa07_13_t1 ~ 1
sa07_14_t1 ~ 1
sa07_15_t1 ~ 1
'
fit_mi_lcs_openn_curr_specif_hyp5 <- lavaan(mi_lcs_openn_curr_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 61 22659.68 22886.42 0.819 0.075 0.108
# parameters of interest
params_lcs_openn_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_openn_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "goals ~~ d_openn_1", "goals ~~ goals", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.062 NA NA
d_openn_1 =~ openn_t2 1.000 0.612 NA NA
d_openn_1 ~1 0.638 10.791 3.491 0.000
openn_t1 ~1 2.918 28.437 48.274 0.000
d_openn_1 ~~ d_openn_1 0.003 0.851 0.636 0.525
d_openn_1 ~ openn_t1 -0.223 -0.386 -3.591 0.000
goals ~~ d_openn_1 0.004 0.116 0.889 0.374
goals ~~ goals 0.492 1.000 4.289 0.000

Correlation of specific, facet-level acceptance goals with openness change score (current-self) is not significantly different from zero, r = 0.004, p = 0.374.

3.7.1.20 Openness - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_ideal_specif_hyp5 <- '
openn_t1 =~ 1*bf06_05_t1 + lamb2*bf06_10_t1 + lamb3*bf06_15_t1 + lamb4*bf06_20_t1 + lamb5*bf06_25_t1 + lamb6*bf06_30_t1 + lamb7*bf06_35_t1 + lamb8*bf06_40_t1 + lamb9*bf06_45_t1 + lamb10*bf06_50_t1 + lamb11*bf06_55_t1 + lamb12*bf06_60_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*bf06_05_t2 + lamb2*bf06_10_t2 + lamb3*bf06_15_t2 + lamb4*bf06_20_t2 + lamb5*bf06_25_t2 + lamb6*bf06_30_t2 + lamb7*bf06_35_t2 + lamb8*bf06_40_t2 + lamb9*bf06_45_t2 + lamb10*bf06_50_t2 + lamb11*bf06_55_t2 + lamb12*bf06_60_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

goals =~ 1*sa07_13_t1 + sa07_14_t1 + sa07_15_t1 # latent acceptance goal variable (three facets per trait)

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

bf06_05_t1 ~~ bf06_05_t2   # This allows residual covariance on indicator X1 across T1 and T2
bf06_10_t1 ~~ bf06_10_t2   # This allows residual covariance on indicator X2 across T1 and T2
bf06_15_t1 ~~ bf06_15_t2   # This allows residual covariance on indicator X3 across T1 and T2
bf06_20_t1 ~~ bf06_20_t2   # This allows residual covariance on indicator X4 across T1 and T2
bf06_25_t1 ~~ bf06_25_t2   # This allows residual covariance on indicator X5 across T1 and T2
bf06_30_t1 ~~ bf06_30_t2   # This allows residual covariance on indicator X6 across T1 and T2
bf06_35_t1 ~~ bf06_35_t2   # This allows residual covariance on indicator X7 across T1 and T2
bf06_40_t1 ~~ bf06_40_t2   # This allows residual covariance on indicator X8 across T1 and T2
bf06_45_t1 ~~ bf06_45_t2   # This allows residual covariance on indicator X9 across T1 and T2
bf06_50_t1 ~~ bf06_50_t2   # This allows residual covariance on indicator X10 across T1 and T2
bf06_55_t1 ~~ bf06_55_t2   # This allows residual covariance on indicator X11 across T1 and T2
bf06_60_t1 ~~ bf06_60_t2   # This allows residual covariance on indicator X12 across T1 and T2

bf06_05_t1 ~~ res1*bf06_05_t1   # This allows residual variance on indicator X1 at T1 
bf06_10_t1 ~~ res2*bf06_10_t1   # This allows residual variance on indicator X2 at T1
bf06_15_t1 ~~ res3*bf06_15_t1   # This allows residual variance on indicator X3 at T1
bf06_20_t1 ~~ res4*bf06_20_t1   # This allows residual variance on indicator X4 at T1
bf06_25_t1 ~~ res5*bf06_25_t1   # This allows residual variance on indicator X5 at T1
bf06_30_t1 ~~ res6*bf06_30_t1   # This allows residual variance on indicator X6 at T1 
bf06_35_t1 ~~ res7*bf06_35_t1   # This allows residual variance on indicator X7 at T1
bf06_40_t1 ~~ res8*bf06_40_t1   # This allows residual variance on indicator X8 at T1
bf06_45_t1 ~~ res9*bf06_45_t1   # This allows residual variance on indicator X9 at T1
bf06_50_t1 ~~ res10*bf06_50_t1  # This allows residual variance on indicator X10 at T1
bf06_55_t1 ~~ res11*bf06_55_t1  # This allows residual variance on indicator X11 at T1
bf06_60_t1 ~~ res12*bf06_60_t1  # This allows residual variance on indicator X12 at T1

bf06_05_t2 ~~ res1*bf06_05_t2  # This allows residual variance on indicator X1 at T2 
bf06_10_t2 ~~ res2*bf06_10_t2  # This allows residual variance on indicator X2 at T2 
bf06_15_t2 ~~ res3*bf06_15_t2  # This allows residual variance on indicator X3 at T2
bf06_20_t2 ~~ res4*bf06_20_t2  # This allows residual variance on indicator X4 at T2
bf06_25_t2 ~~ res5*bf06_25_t2  # This allows residual variance on indicator X5 at T2
bf06_30_t2 ~~ res6*bf06_30_t2  # This allows residual variance on indicator X6 at T2 
bf06_35_t2 ~~ res7*bf06_35_t2  # This allows residual variance on indicator X7 at T2 
bf06_40_t2 ~~ res8*bf06_40_t2  # This allows residual variance on indicator X8 at T2
bf06_45_t2 ~~ res9*bf06_45_t2  # This allows residual variance on indicator X9 at T2
bf06_50_t2 ~~ res10*bf06_50_t2 # This allows residual variance on indicator X10 at T2
bf06_55_t2 ~~ res11*bf06_55_t2 # This allows residual variance on indicator X11 at T2
bf06_60_t2 ~~ res12*bf06_60_t2 # This allows residual variance on indicator X12 at T2

bf06_05_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
bf06_10_t1 ~ m2*1     # This estimates the intercept of X2 at T1
bf06_15_t1 ~ m3*1     # This estimates the intercept of X3 at T1
bf06_20_t1 ~ m4*1     # This estimates the intercept of X4 at T1
bf06_25_t1 ~ m5*1     # This estimates the intercept of X5 at T1
bf06_30_t1 ~ m6*1     # This estimates the intercept of X6 at T1
bf06_35_t1 ~ m7*1     # This estimates the intercept of X7 at T1
bf06_40_t1 ~ m8*1     # This estimates the intercept of X8 at T1
bf06_45_t1 ~ m9*1     # This estimates the intercept of X9 at T1
bf06_50_t1 ~ m10*1    # This estimates the intercept of X10 at T1
bf06_55_t1 ~ m11*1    # This estimates the intercept of X11 at T1
bf06_60_t1 ~ m12*1    # This estimates the intercept of X12 at T1

bf06_05_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
bf06_10_t2 ~ m2*1     # This estimates the intercept of X2 at T2
bf06_15_t2 ~ m3*1     # This estimates the intercept of X3 at T2
bf06_20_t2 ~ m4*1     # This estimates the intercept of X4 at T2
bf06_25_t2 ~ m5*1     # This estimates the intercept of X5 at T2
bf06_30_t2 ~ m6*1     # This estimates the intercept of X6 at T2
bf06_35_t2 ~ m7*1     # This estimates the intercept of X7 at T2
bf06_40_t2 ~ m8*1     # This estimates the intercept of X8 at T2
bf06_45_t2 ~ m9*1     # This estimates the intercept of X9 at T2
bf06_50_t2 ~ m10*1    # This estimates the intercept of X10 at T2
bf06_55_t2 ~ m11*1    # This estimates the intercept of X11 at T2
bf06_60_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa07_13_t1 ~~ sa07_13_t1
sa07_14_t1 ~~ sa07_14_t1
sa07_15_t1 ~~ sa07_15_t1

sa07_13_t1 ~ 1
sa07_14_t1 ~ 1
sa07_15_t1 ~ 1
'
fit_mi_lcs_openn_ideal_specif_hyp5 <- lavaan(mi_lcs_openn_ideal_specif_hyp5, data=df_sbsa_wide_pers_sa, estimator='WLSMV', fixed.x=FALSE, ordered=c("sa07_13_t1", "sa07_14_t1", "sa07_15_t1"))
# This model did not converge properly (when adding the 'sa06_01_t1' goal variable). Declaring 'sa06_01_t1' as an 
# ordered variable and using the WLSMV estimator (sadly without FIML) worked in the end. Results 
# https://lavaan.ugent.be/tutorial/cat.html
summary(fit_mi_lcs_openn_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
294 61 NA NA 0.958 0.049 0.073
# parameters of interest
params_lcs_openn_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_openn_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "goals ~~ d_openn_1", "goals ~~ goals", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.891 NA NA
d_openn_1 =~ openn_t2 1.000 0.686 NA NA
d_openn_1 ~1 0.525 14.928 2.394 0.017
openn_t1 ~1 3.135 68.577 42.414 0.000
d_openn_1 ~~ d_openn_1 0.001 0.953 5.834 0.000
d_openn_1 ~ openn_t1 -0.167 -0.216 -2.422 0.015
goals ~~ d_openn_1 0.004 0.200 2.016 0.044
goals ~~ goals 0.390 1.000 7.603 0.000

The correlation of specific, facet-level acceptance goals with the openness change score (ideal-self) is significantly different from zero, r = 0.004, p = 0.044. (I had to use the ‘WLSMV’ estimator with the “ordered” argument here to get the model to converge - not sure if this is comparable to the other models since a really small estimate becomes significant here…)

3.7.2 Big Five facets

Run models for all facets with a template & loop:

Show the code
# create template:
facet_template <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1       # This estimates the variance of facet_t1 
d_facet_1 ~ facet_t1       # This estimates the self-feedback parameter

d_facet_1 ~~ ind_goal     # estimates the covariance/correlation with acceptance goal variable

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # loop across 2 BFI versions (combined pre&post current/ideal)
  for (j in 5:length(bfi_versions)) {
    items = paste0(bfi_versions[[j]], item_nrs)
    # loop across 2 different goal operationalizations (sa06_01_t1 & sa07_XX_t1)
    for (k in 1:2) {
      if (k==1) {
        goal_op = "sa06_01_t1"
      } else{
        goal_op = paste0("sa07_", str_pad(i-5, 2, pad = "0"), "_t1")
      }
      template_filled <- str_replace_all(facet_template, 
                                         c("facet" = short_name,
                                           "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                           "ind_goal" = goal_op))
      facet_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
      # save to environment
      if (k==1) {
        eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_hyp5")), template_filled))
        eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_hyp5")), facet_model_fit))
      } else{
        eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_specif_hyp5")), template_filled))
        eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_specif_hyp5")), facet_model_fit))
      }
    }
  }
}  
3.7.2.1 Sociability - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7290.677 7372.452 0.968 0.067 0.05
# parameters of interest
params_lcs_socia_curr_hyp5 <- broom::tidy(fit_mi_lcs_socia_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.045 NA NA
d_socia_1 =~ socia_t2 1.000 0.457 NA NA
d_socia_1 ~1 0.555 1.426 4.957 0.000
socia_t1 ~1 2.805 3.150 38.963 0.000
d_socia_1 ~~ d_socia_1 0.137 0.901 3.778 0.000
d_socia_1 ~ socia_t1 -0.138 -0.315 -3.499 0.000
d_socia_1 ~~ sa06_01_t1 0.057 0.160 2.042 0.041
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.187 4.395 75.592 0.000

The correlation of the general acceptance goal with the sociability change score (current-self) is significantly different from zero, r = 0.057, p = 0.041.

3.7.2.2 Sociability - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7260.021 7341.795 0.942 0.054 0.055
# parameters of interest
params_lcs_socia_ideal_hyp5 <- broom::tidy(fit_mi_lcs_socia_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.017 NA NA
d_socia_1 =~ socia_t2 1.000 0.756 NA NA
d_socia_1 ~1 1.219 4.523 2.718 0.007
socia_t1 ~1 4.321 11.909 111.299 0.000
d_socia_1 ~~ d_socia_1 0.061 0.845 2.235 0.025
d_socia_1 ~ socia_t1 -0.293 -0.394 -2.866 0.004
d_socia_1 ~~ sa06_01_t1 0.003 0.011 0.132 0.895
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.793 0.000

Correlation of general acceptance goal with sociability change score (ideal-self) is not significantly different from zero, r = 0.003, p = 0.895.

3.7.2.3 Sociability - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7509.646 7591.421 0.917 0.11 0.143
# parameters of interest
params_lcs_socia_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_socia_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sa07_01_t1", "sa07_01_t1 ~~ sa07_01_t1", # acceptance goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.053 NA NA
d_socia_1 =~ socia_t2 1.000 0.465 NA NA
d_socia_1 ~1 0.579 1.476 4.710 0.000
socia_t1 ~1 2.806 3.159 38.989 0.000
d_socia_1 ~~ d_socia_1 0.137 0.890 3.845 0.000
d_socia_1 ~ socia_t1 -0.147 -0.332 -3.349 0.001
d_socia_1 ~~ sa07_01_t1 -0.007 -0.013 -0.143 0.886
sa07_01_t1 ~~ sa07_01_t1 1.874 1.000 17.532 0.000

Correlation of specific, facet-level acceptance goals with sociability change score (current-self) is not significantly different from zero, r = -0.007, p = 0.886.

3.7.2.4 Sociability - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7473.497 7555.272 0.918 0.065 0.061
# parameters of interest
params_lcs_socia_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_socia_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sa07_01_t1", "sa07_01_t1 ~~ sa07_01_t1", # acceptance goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.005 NA NA
d_socia_1 =~ socia_t2 1.000 0.729 NA NA
d_socia_1 ~1 1.112 4.061 2.393 0.017
socia_t1 ~1 4.321 11.451 110.641 0.000
d_socia_1 ~~ d_socia_1 0.065 0.863 2.156 0.031
d_socia_1 ~ socia_t1 -0.268 -0.370 -2.535 0.011
d_socia_1 ~~ sa07_01_t1 -0.047 -0.136 -1.014 0.311
sa07_01_t1 ~~ sa07_01_t1 1.874 1.000 17.532 0.000

Correlation of specific, facet-level acceptance goals with anxiety change score (ideal-self) is not significantly different from zero, r = -0.047, p = 0.311.

3.7.2.5 Assertiveness - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7635.788 7717.563 0.984 0.039 0.042
# parameters of interest
params_lcs_asser_curr_hyp5 <- broom::tidy(fit_mi_lcs_asser_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 0.986 NA NA
d_asser_1 =~ asser_t2 1.000 0.534 NA NA
d_asser_1 ~1 0.503 1.518 3.365 0.001
asser_t1 ~1 3.104 5.073 52.037 0.000
d_asser_1 ~~ d_asser_1 0.103 0.941 3.814 0.000
d_asser_1 ~ asser_t1 -0.132 -0.244 -2.834 0.005
d_asser_1 ~~ sa06_01_t1 0.041 0.135 1.624 0.104
sa06_01_t1 ~~ sa06_01_t1 0.908 1.000 9.678 0.000
sa06_01_t1 ~1 4.191 4.399 75.980 0.000

Correlation of general acceptance goal with assertiveness change score (current-self) is not significantly different from zero, r = 0.041, p = 0.104.

3.7.2.6 Assertiveness - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7472.627 7554.402 0.983 0.028 0.042
# parameters of interest
params_lcs_asser_ideal_hyp5 <- broom::tidy(fit_mi_lcs_asser_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.020 NA NA
d_asser_1 =~ asser_t2 1.000 0.734 NA NA
d_asser_1 ~1 1.126 5.539 2.905 0.004
asser_t1 ~1 4.148 14.698 84.932 0.000
d_asser_1 ~~ d_asser_1 0.035 0.851 2.188 0.029
d_asser_1 ~ asser_t1 -0.278 -0.387 -3.018 0.003
d_asser_1 ~~ sa06_01_t1 0.020 0.114 1.198 0.231
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.685 0.000
sa06_01_t1 ~1 4.189 4.398 75.868 0.000

Correlation of general acceptance goal with assertiveness change score (ideal-self) is not significantly different from zero, r = 0.02, p = 0.231.

3.7.2.7 Assertiveness - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7854.65 7936.425 0.932 0.082 0.098
# parameters of interest
params_lcs_asser_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_asser_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sa07_02_t1", "sa07_02_t1 ~~ sa07_02_t1", # acceptance goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 0.990 NA NA
d_asser_1 =~ asser_t2 1.000 0.539 NA NA
d_asser_1 ~1 0.523 1.565 3.281 0.001
asser_t1 ~1 3.104 5.048 52.020 0.000
d_asser_1 ~~ d_asser_1 0.105 0.935 3.808 0.000
d_asser_1 ~ asser_t1 -0.138 -0.254 -2.761 0.006
d_asser_1 ~~ sa07_02_t1 -0.004 -0.009 -0.100 0.920
sa07_02_t1 ~~ sa07_02_t1 1.879 1.000 18.465 0.000

Correlation of specific, facet-level acceptance goals with assertiveness change score (current-self) is not significantly different from zero, r = -0.004, p = 0.92.

3.7.2.8 Assertiveness - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7689.82 7771.595 0.971 0.036 0.049
# parameters of interest
params_lcs_asser_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_asser_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sa07_02_t1", "sa07_02_t1 ~~ sa07_02_t1", # acceptance goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.012 NA NA
d_asser_1 =~ asser_t2 1.000 0.723 NA NA
d_asser_1 ~1 1.078 5.331 2.752 0.006
asser_t1 ~1 4.148 14.647 84.988 0.000
d_asser_1 ~~ d_asser_1 0.035 0.860 2.186 0.029
d_asser_1 ~ asser_t1 -0.267 -0.374 -2.862 0.004
d_asser_1 ~~ sa07_02_t1 -0.019 -0.074 -0.773 0.439
sa07_02_t1 ~~ sa07_02_t1 1.879 1.000 18.466 0.000

Correlation of specific, facet-level acceptance goals with assertiveness change score (ideal-self) is not significantly different from zero, r = -0.019, p = 0.439.

3.7.2.9 Energy - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7747.29 7829.064 0.965 0.056 0.052
# parameters of interest
params_lcs_energ_curr_hyp5 <- broom::tidy(fit_mi_lcs_energ_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.054 NA NA
d_energ_1 =~ energ_t2 1.000 0.641 NA NA
d_energ_1 ~1 0.548 1.972 4.220 0.000
energ_t1 ~1 2.678 5.867 47.471 0.000
d_energ_1 ~~ d_energ_1 0.066 0.851 2.715 0.007
d_energ_1 ~ energ_t1 -0.235 -0.386 -4.732 0.000
d_energ_1 ~~ sa06_01_t1 -0.011 -0.043 -0.597 0.551
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.778 0.000

Correlation of general acceptance goal with energy change score (current-self) is not significantly different from zero, r = -0.011, p = 0.551.

3.7.2.10 Energy - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6796.785 6878.559 0.967 0.031 0.049
# parameters of interest
params_lcs_energ_ideal_hyp5 <- broom::tidy(fit_mi_lcs_energ_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.057 NA NA
d_energ_1 =~ energ_t2 1.000 0.826 NA NA
d_energ_1 ~1 0.863 6.507 3.671 0.000
energ_t1 ~1 2.395 14.117 38.740 0.000
d_energ_1 ~~ d_energ_1 0.014 0.790 0.855 0.393
d_energ_1 ~ energ_t1 -0.358 -0.458 -3.654 0.000
d_energ_1 ~~ sa06_01_t1 -0.020 -0.177 -1.232 0.218
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.190 4.399 75.887 0.000

Correlation of general acceptance goal with energy change score (ideal-self) is not significantly different from zero, r = -0.02, p = 0.218.

3.7.2.11 Energy - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7974.196 8055.971 0.887 0.106 0.128
# parameters of interest
params_lcs_energ_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_energ_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sa07_03_t1", "sa07_03_t1 ~~ sa07_03_t1", # acceptance goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.083 NA NA
d_energ_1 =~ energ_t2 1.000 0.681 NA NA
d_energ_1 ~1 0.646 2.250 4.349 0.000
energ_t1 ~1 2.678 5.865 47.508 0.000
d_energ_1 ~~ d_energ_1 0.067 0.814 2.769 0.006
d_energ_1 ~ energ_t1 -0.271 -0.432 -4.783 0.000
d_energ_1 ~~ sa07_03_t1 0.041 0.113 1.226 0.220
sa07_03_t1 ~~ sa07_03_t1 1.956 1.000 18.682 0.000

Correlation of specific, facet-level acceptance goals with energy change score (current-self) is not significantly different from zero, r = 0.041, p = 0.22.

3.7.2.12 Energy - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7027.009 7108.783 0.95 0.039 0.051
# parameters of interest
params_lcs_energ_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_energ_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sa07_03_t1", "sa07_03_t1 ~~ sa07_03_t1", # acceptance goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.047 NA NA
d_energ_1 =~ energ_t2 1.000 0.808 NA NA
d_energ_1 ~1 0.824 6.337 3.444 0.001
energ_t1 ~1 2.395 14.223 38.743 0.000
d_energ_1 ~~ d_energ_1 0.014 0.804 0.847 0.397
d_energ_1 ~ energ_t1 -0.342 -0.443 -3.422 0.001
d_energ_1 ~~ sa07_03_t1 0.021 0.129 0.975 0.330
sa07_03_t1 ~~ sa07_03_t1 1.956 1.000 18.683 0.000

Correlation of specific, facet-level acceptance goals with energy change score (ideal-self) is not significantly different from zero, r = 0.021, p = 0.33.

3.7.2.13 Compassion - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7595.638 7677.413 0.934 0.066 0.068
# parameters of interest
params_lcs_compa_curr_hyp5 <- broom::tidy(fit_mi_lcs_compa_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.114 NA NA
d_compa_1 =~ compa_t2 1.000 0.745 NA NA
d_compa_1 ~1 1.382 2.729 3.653 0.000
compa_t1 ~1 4.137 5.458 74.874 0.000
d_compa_1 ~~ d_compa_1 0.197 0.770 3.146 0.002
d_compa_1 ~ compa_t1 -0.321 -0.480 -3.703 0.000
d_compa_1 ~~ sa06_01_t1 0.085 0.201 1.935 0.053
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.684 0.000
sa06_01_t1 ~1 4.188 4.397 75.744 0.000

Correlation of general acceptance goal with compassion change score (current-self) is not significantly different from zero, r = 0.085, p = 0.053.

3.7.2.14 Compassion - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7745.871 7827.646 0.975 0.032 0.056
# parameters of interest
params_lcs_compa_ideal_hyp5 <- broom::tidy(fit_mi_lcs_compa_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 0.942 NA NA
d_compa_1 =~ compa_t2 1.000 0.632 NA NA
d_compa_1 ~1 0.608 1.515 1.245 0.213
compa_t1 ~1 4.298 7.182 89.973 0.000
d_compa_1 ~~ d_compa_1 0.152 0.942 2.370 0.018
d_compa_1 ~ compa_t1 -0.161 -0.241 -1.455 0.146
d_compa_1 ~~ sa06_01_t1 0.043 0.116 1.128 0.259
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.188 4.397 75.785 0.000

Correlation of general acceptance goal with compassion change score (ideal-self) is not significantly different from zero, r = 0.043, p = 0.259.

3.7.2.15 Compassion - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7794.554 7876.328 0.927 0.069 0.075
# parameters of interest
params_lcs_compa_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_compa_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sa07_04_t1", "sa07_04_t1 ~~ sa07_04_t1", # acceptance goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.081 NA NA
d_compa_1 =~ compa_t2 1.000 0.691 NA NA
d_compa_1 ~1 1.195 2.547 3.227 0.001
compa_t1 ~1 4.140 5.646 75.722 0.000
d_compa_1 ~~ d_compa_1 0.179 0.813 3.219 0.001
d_compa_1 ~ compa_t1 -0.276 -0.432 -3.253 0.001
d_compa_1 ~~ sa07_04_t1 0.027 0.048 0.578 0.563
sa07_04_t1 ~~ sa07_04_t1 1.742 1.000 17.600 0.000

Correlation of specific, facet-level acceptance goals with compassion change score (current-self) is not significantly different from zero, r = 0.027, p = 0.563.

3.7.2.16 Compassion - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7939.428 8021.203 1 0 0.034
# parameters of interest
params_lcs_compa_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_compa_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sa07_04_t1", "sa07_04_t1 ~~ sa07_04_t1", # acceptance goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 0.933 NA NA
d_compa_1 =~ compa_t2 1.000 0.612 NA NA
d_compa_1 ~1 0.522 1.342 1.101 0.271
compa_t1 ~1 4.297 7.261 89.981 0.000
d_compa_1 ~~ d_compa_1 0.144 0.954 2.311 0.021
d_compa_1 ~ compa_t1 -0.141 -0.215 -1.312 0.190
d_compa_1 ~~ sa07_04_t1 -0.060 -0.120 -1.195 0.232
sa07_04_t1 ~~ sa07_04_t1 1.742 1.000 17.599 0.000

Correlation of specific, facet-level acceptance goals with compassion change score (ideal-self) is not significantly different from zero, r = -0.06, p = 0.232.

3.7.2.17 Respectfulness - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6717.202 6798.977 0.961 0.056 0.054
# parameters of interest
params_lcs_respe_curr_hyp5 <- broom::tidy(fit_mi_lcs_respe_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 0.988 NA NA
d_respe_1 =~ respe_t2 1.000 0.591 NA NA
d_respe_1 ~1 0.760 2.825 2.016 0.044
respe_t1 ~1 4.478 9.953 122.539 0.000
d_respe_1 ~~ d_respe_1 0.067 0.922 2.940 0.003
d_respe_1 ~ respe_t1 -0.167 -0.279 -2.019 0.043
d_respe_1 ~~ sa06_01_t1 0.017 0.071 0.737 0.461
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.788 0.000

Correlation of general acceptance goal with respectfulness change score (current-self) is not significantly different from zero, r = 0.017, p = 0.461.

3.7.2.18 Respectfulness - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6202.569 6284.344 0.957 0.048 0.059
# parameters of interest
params_lcs_respe_ideal_hyp5 <- broom::tidy(fit_mi_lcs_respe_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 0.849 NA NA
d_respe_1 =~ respe_t2 1.000 0.624 NA NA
d_respe_1 ~1 0.336 1.462 0.773 0.439
respe_t1 ~1 4.703 15.013 163.300 0.000
d_respe_1 ~~ d_respe_1 0.052 0.989 2.855 0.004
d_respe_1 ~ respe_t1 -0.077 -0.104 -0.838 0.402
d_respe_1 ~~ sa06_01_t1 0.002 0.007 0.078 0.938
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.772 0.000

Correlation of general acceptance goal with respectfulness change score (ideal-self) is not significantly different from zero, r = 0.002, p = 0.938.

3.7.2.19 Respectfulness - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6903.87 6985.644 0.931 0.075 0.09
# parameters of interest
params_lcs_respe_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_respe_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sa07_05_t1", "sa07_05_t1 ~~ sa07_05_t1", # acceptance goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 0.983 NA NA
d_respe_1 =~ respe_t2 1.000 0.584 NA NA
d_respe_1 ~1 0.726 2.715 1.893 0.058
respe_t1 ~1 4.478 9.947 122.511 0.000
d_respe_1 ~~ d_respe_1 0.066 0.928 2.951 0.003
d_respe_1 ~ respe_t1 -0.159 -0.268 -1.894 0.058
d_respe_1 ~~ sa07_05_t1 0.004 0.013 0.146 0.884
sa07_05_t1 ~~ sa07_05_t1 1.697 1.000 11.268 0.000

Correlation of specific, facet-level acceptance goals with respectfulness change score (current-self) is not significantly different from zero, r = 0.004, p = 0.884.

3.7.2.20 Respectfulness - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6387.998 6469.773 0.982 0.031 0.047
# parameters of interest
params_lcs_respe_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_respe_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sa07_05_t1", "sa07_05_t1 ~~ sa07_05_t1", # acceptance goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 0.851 NA NA
d_respe_1 =~ respe_t2 1.000 0.627 NA NA
d_respe_1 ~1 0.362 1.568 0.847 0.397
respe_t1 ~1 4.703 15.035 163.319 0.000
d_respe_1 ~~ d_respe_1 0.052 0.988 2.883 0.004
d_respe_1 ~ respe_t1 -0.082 -0.111 -0.914 0.361
d_respe_1 ~~ sa07_05_t1 -0.021 -0.069 -0.738 0.461
sa07_05_t1 ~~ sa07_05_t1 1.697 1.000 11.269 0.000

Correlation of specific, facet-level acceptance goals with respectfulness change score (ideal-self) is not significantly different from zero, r = -0.021, p = 0.461.

3.7.2.21 Trust - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7745.384 7827.159 0.963 0.055 0.063
# parameters of interest
params_lcs_trust_curr_hyp5 <- broom::tidy(fit_mi_lcs_trust_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.053 NA NA
d_trust_1 =~ trust_t2 1.000 0.549 NA NA
d_trust_1 ~1 0.472 1.625 2.551 0.011
trust_t1 ~1 2.887 5.185 47.071 0.000
d_trust_1 ~~ d_trust_1 0.074 0.874 2.052 0.040
d_trust_1 ~ trust_t1 -0.185 -0.355 -2.775 0.006
d_trust_1 ~~ sa06_01_t1 -0.003 -0.010 -0.108 0.914
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.397 75.776 0.000

Correlation of general acceptance goal with trust change score (current-self) is not significantly different from zero, r = -0.003, p = 0.914.

3.7.2.22 Trust - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7479.964 7561.739 0.954 0.048 0.059
# parameters of interest
params_lcs_trust_ideal_hyp5 <- broom::tidy(fit_mi_lcs_trust_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 0.997 NA NA
d_trust_1 =~ trust_t2 1.000 0.702 NA NA
d_trust_1 ~1 0.505 1.730 3.103 0.002
trust_t1 ~1 1.904 4.590 38.060 0.000
d_trust_1 ~~ d_trust_1 0.075 0.879 2.865 0.004
d_trust_1 ~ trust_t1 -0.245 -0.348 -2.916 0.004
d_trust_1 ~~ sa06_01_t1 -0.039 -0.148 -1.579 0.114
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.187 4.396 75.768 0.000

Correlation of general acceptance goal with trust change score (ideal-self) is not significantly different from zero, r = -0.039, p = 0.114.

3.7.2.23 Trust - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7976.903 8058.678 0.98 0.04 0.061
# parameters of interest
params_lcs_trust_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_trust_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sa07_06_t1", "sa07_06_t1 ~~ sa07_06_t1", # acceptance goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.062 NA NA
d_trust_1 =~ trust_t2 1.000 0.563 NA NA
d_trust_1 ~1 0.507 1.728 2.825 0.005
trust_t1 ~1 2.887 5.208 47.070 0.000
d_trust_1 ~~ d_trust_1 0.074 0.861 2.112 0.035
d_trust_1 ~ trust_t1 -0.197 -0.372 -3.059 0.002
d_trust_1 ~~ sa07_06_t1 0.055 0.142 1.639 0.101
sa07_06_t1 ~~ sa07_06_t1 1.995 1.000 18.812 0.000

Correlation of specific, facet-level acceptance goals with trust change score (current-self) is not significantly different from zero, r = 0.055, p = 0.101.

3.7.2.24 Trust - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7715.999 7797.773 0.979 0.032 0.044
# parameters of interest
params_lcs_trust_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_trust_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sa07_06_t1", "sa07_06_t1 ~~ sa07_06_t1", # acceptance goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 0.979 NA NA
d_trust_1 =~ trust_t2 1.000 0.673 NA NA
d_trust_1 ~1 0.447 1.594 2.846 0.004
trust_t1 ~1 1.904 4.667 38.122 0.000
d_trust_1 ~~ d_trust_1 0.071 0.903 2.854 0.004
d_trust_1 ~ trust_t1 -0.215 -0.312 -2.653 0.008
d_trust_1 ~~ sa07_06_t1 0.026 0.068 0.747 0.455
sa07_06_t1 ~~ sa07_06_t1 1.995 1.000 18.815 0.000

Correlation of specific, facet-level acceptance goals with trust change score (ideal-self) is not significantly different from zero, r = 0.026, p = 0.455.

3.7.2.25 Organization - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7370.927 7452.701 0.984 0.05 0.031
# parameters of interest
params_lcs_organ_curr_hyp5 <- broom::tidy(fit_mi_lcs_organ_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.082 NA NA
d_organ_1 =~ organ_t2 1.000 0.433 NA NA
d_organ_1 ~1 0.306 0.690 3.149 0.002
organ_t1 ~1 2.962 2.673 37.636 0.000
d_organ_1 ~~ d_organ_1 0.168 0.853 3.948 0.000
d_organ_1 ~ organ_t1 -0.153 -0.383 -4.398 0.000
d_organ_1 ~~ sa06_01_t1 0.022 0.055 0.692 0.489
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.188 4.397 75.641 0.000

Correlation of general acceptance goal with organization change score (current-self) is not significantly different from zero, r = 0.022, p = 0.489.

3.7.2.26 Organization - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6324.828 6406.603 0.93 0.053 0.055
# parameters of interest
params_lcs_organ_ideal_hyp5 <- broom::tidy(fit_mi_lcs_organ_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 0.981 NA NA
d_organ_1 =~ organ_t2 1.000 0.827 NA NA
d_organ_1 ~1 0.574 2.339 2.393 0.017
organ_t1 ~1 1.681 5.779 36.117 0.000
d_organ_1 ~~ d_organ_1 0.051 0.841 2.140 0.032
d_organ_1 ~ organ_t1 -0.336 -0.398 -2.307 0.021
d_organ_1 ~~ sa06_01_t1 0.011 0.052 0.599 0.549
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.850 0.000

Correlation of general acceptance goal with organization change score (ideal-self) is not significantly different from zero, r = 0.011, p = 0.549.

3.7.2.27 Organization - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7648.036 7729.811 0.894 0.134 0.178
# parameters of interest
params_lcs_organ_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_organ_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sa07_07_t1", "sa07_07_t1 ~~ sa07_07_t1", # acceptance goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.142 NA NA
d_organ_1 =~ organ_t2 1.000 0.503 NA NA
d_organ_1 ~1 0.485 0.992 3.776 0.000
organ_t1 ~1 2.962 2.667 37.633 0.000
d_organ_1 ~~ d_organ_1 0.183 0.765 4.083 0.000
d_organ_1 ~ organ_t1 -0.214 -0.485 -4.898 0.000
d_organ_1 ~~ sa07_07_t1 0.162 0.248 2.390 0.017
sa07_07_t1 ~~ sa07_07_t1 2.348 1.000 24.007 0.000

The correlation of specific, facet-level acceptance goals with the organization change score (current-self) is significantly different from zero, r = 0.162, p = 0.017.

3.7.2.28 Organization - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6605.559 6687.334 0.93 0.053 0.056
# parameters of interest
params_lcs_organ_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_organ_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sa07_07_t1", "sa07_07_t1 ~~ sa07_07_t1", # acceptance goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 0.991 NA NA
d_organ_1 =~ organ_t2 1.000 0.850 NA NA
d_organ_1 ~1 0.612 2.437 2.661 0.008
organ_t1 ~1 1.681 5.735 36.114 0.000
d_organ_1 ~~ d_organ_1 0.052 0.825 2.142 0.032
d_organ_1 ~ organ_t1 -0.359 -0.419 -2.568 0.010
d_organ_1 ~~ sa07_07_t1 0.041 0.117 1.288 0.198
sa07_07_t1 ~~ sa07_07_t1 2.348 1.000 24.004 0.000

Correlation of specific, facet-level acceptance goals with organization change score (ideal-self) is not significantly different from zero, r = 0.041, p = 0.198.

3.7.2.29 Productiveness - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7448.386 7530.161 0.987 0.038 0.037
# parameters of interest
params_lcs_produ_curr_hyp5 <- broom::tidy(fit_mi_lcs_produ_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.001 NA NA
d_produ_1 =~ produ_t2 1.000 0.458 NA NA
d_produ_1 ~1 0.175 0.478 1.016 0.310
produ_t1 ~1 3.480 4.355 50.898 0.000
d_produ_1 ~~ d_produ_1 0.127 0.947 3.517 0.000
d_produ_1 ~ produ_t1 -0.106 -0.231 -2.174 0.030
d_produ_1 ~~ sa06_01_t1 -0.011 -0.032 -0.413 0.679
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.766 0.000

Correlation of general acceptance goal with productiveness change score (current-self) is not significantly different from zero, r = -0.011, p = 0.679.

3.7.2.30 Productiveness - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 5947.459 6029.234 0.867 0.068 0.067
# parameters of interest
params_lcs_produ_ideal_hyp5 <- broom::tidy(fit_mi_lcs_produ_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 0.915 NA NA
d_produ_1 =~ produ_t2 1.000 0.720 NA NA
d_produ_1 ~1 0.325 1.336 1.562 0.118
produ_t1 ~1 1.596 5.158 40.370 0.000
d_produ_1 ~~ d_produ_1 0.055 0.927 2.413 0.016
d_produ_1 ~ produ_t1 -0.213 -0.270 -1.555 0.120
d_produ_1 ~~ sa06_01_t1 -0.019 -0.084 -0.929 0.353
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.682 0.000
sa06_01_t1 ~1 4.189 4.398 75.742 0.000

Correlation of general acceptance goal with productiveness change score (ideal-self) is not significantly different from zero, r = -0.019, p = 0.353.

3.7.2.31 Productiveness - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7698.87 7780.644 0.898 0.113 0.151
# parameters of interest
params_lcs_produ_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_produ_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sa07_08_t1", "sa07_08_t1 ~~ sa07_08_t1", # acceptance goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.041 NA NA
d_produ_1 =~ produ_t2 1.000 0.503 NA NA
d_produ_1 ~1 0.349 0.906 1.604 0.109
produ_t1 ~1 3.480 4.371 50.926 0.000
d_produ_1 ~~ d_produ_1 0.133 0.897 3.531 0.000
d_produ_1 ~ produ_t1 -0.155 -0.322 -2.515 0.012
d_produ_1 ~~ sa07_08_t1 0.090 0.170 1.504 0.132
sa07_08_t1 ~~ sa07_08_t1 2.126 1.000 20.631 0.000

Correlation of specific, facet-level acceptance goals with productiveness change score (current-self) is not significantly different from zero, r = 0.09, p = 0.132.

3.7.2.32 Productiveness - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6201.146 6282.921 0.859 0.07 0.067
# parameters of interest
params_lcs_produ_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_produ_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sa07_08_t1", "sa07_08_t1 ~~ sa07_08_t1", # acceptance goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 0.914 NA NA
d_produ_1 =~ produ_t2 1.000 0.717 NA NA
d_produ_1 ~1 0.320 1.313 1.533 0.125
produ_t1 ~1 1.596 5.136 40.351 0.000
d_produ_1 ~~ d_produ_1 0.055 0.929 2.377 0.017
d_produ_1 ~ produ_t1 -0.209 -0.267 -1.528 0.127
d_produ_1 ~~ sa07_08_t1 0.011 0.034 0.371 0.710
sa07_08_t1 ~~ sa07_08_t1 2.126 1.000 20.632 0.000

Correlation of specific, facet-level acceptance goals with productiveness change score (ideal-self) is not significantly different from zero, r = 0.011, p = 0.71.

3.7.2.33 Responsibility - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7475.831 7557.606 0.906 0.088 0.083
# parameters of interest
params_lcs_respo_curr_hyp5 <- broom::tidy(fit_mi_lcs_respo_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.030 NA NA
d_respo_1 =~ respo_t2 1.000 0.400 NA NA
d_respo_1 ~1 0.484 1.944 2.097 0.036
respo_t1 ~1 3.642 5.677 65.105 0.000
d_respo_1 ~~ d_respo_1 0.057 0.928 2.198 0.028
d_respo_1 ~ respo_t1 -0.104 -0.268 -1.675 0.094
d_respo_1 ~~ sa06_01_t1 0.018 0.079 0.680 0.496
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.766 0.000

Correlation of general acceptance goal with responsibility change score (current-self) is not significantly different from zero, r = 0.018, p = 0.496.

3.7.2.34 Responsibility - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6826.38 6908.154 0.983 0.027 0.046
# parameters of interest
params_lcs_respo_ideal_hyp5 <- broom::tidy(fit_mi_lcs_respo_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 0.954 NA NA
d_respo_1 =~ respo_t2 1.000 0.768 NA NA
d_respo_1 ~1 1.191 3.067 2.982 0.003
respo_t1 ~1 4.269 8.850 77.057 0.000
d_respo_1 ~~ d_respo_1 0.133 0.884 3.170 0.002
d_respo_1 ~ respo_t1 -0.274 -0.341 -2.984 0.003
d_respo_1 ~~ sa06_01_t1 0.010 0.028 0.291 0.771
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.770 0.000

Correlation of general acceptance goal with responsibility change score (ideal-self) is not significantly different from zero, r = 0.01, p = 0.771.

3.7.2.35 Responsibility - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7714.845 7796.62 0.854 0.114 0.122
# parameters of interest
params_lcs_respo_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_respo_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sa07_09_t1", "sa07_09_t1 ~~ sa07_09_t1", # acceptance goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.102 NA NA
d_respo_1 =~ respo_t2 1.000 0.497 NA NA
d_respo_1 ~1 0.796 2.795 2.569 0.010
respo_t1 ~1 3.642 5.773 65.372 0.000
d_respo_1 ~~ d_respo_1 0.067 0.823 2.479 0.013
d_respo_1 ~ respo_t1 -0.190 -0.421 -2.193 0.028
d_respo_1 ~~ sa07_09_t1 -0.168 -0.447 -3.336 0.001
sa07_09_t1 ~~ sa07_09_t1 2.123 1.000 20.183 0.000

The correlation of specific, facet-level acceptance goals with the responsibility change score (current-self) is significantly different from zero, r = -0.168, p = 0.001.

3.7.2.36 Responsibility - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7077.795 7159.57 0.991 0.02 0.042
# parameters of interest
params_lcs_respo_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_respo_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sa07_09_t1", "sa07_09_t1 ~~ sa07_09_t1", # acceptance goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 0.955 NA NA
d_respo_1 =~ respo_t2 1.000 0.770 NA NA
d_respo_1 ~1 1.200 3.106 3.021 0.003
respo_t1 ~1 4.269 8.904 77.098 0.000
d_respo_1 ~~ d_respo_1 0.132 0.882 3.175 0.001
d_respo_1 ~ respo_t1 -0.276 -0.343 -3.024 0.002
d_respo_1 ~~ sa07_09_t1 -0.047 -0.089 -1.008 0.314
sa07_09_t1 ~~ sa07_09_t1 2.122 1.000 20.214 0.000

Correlation of specific, facet-level acceptance goals with responsibility change score (ideal-self) is not significantly different from zero, r = -0.047, p = 0.314.

3.7.2.37 Anxiety - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7802.719 7884.494 0.979 0.043 0.057
# parameters of interest
params_lcs_anxie_curr_hyp5 <- broom::tidy(fit_mi_lcs_anxie_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 0.959 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.466 NA NA
d_anxie_1 ~1 0.383 0.890 2.660 0.008
anxie_t1 ~1 2.666 3.015 37.597 0.000
d_anxie_1 ~~ d_anxie_1 0.181 0.977 3.477 0.001
d_anxie_1 ~ anxie_t1 -0.074 -0.153 -1.322 0.186
d_anxie_1 ~~ sa06_01_t1 0.017 0.043 0.442 0.658
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.785 0.000

Correlation of general acceptance goal with anxiety change score (current-self) is not significantly different from zero, r = 0.017, p = 0.658.

3.7.2.38 Anxiety - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7441.64 7523.415 0.904 0.043 0.049
# parameters of interest
params_lcs_anxie_ideal_hyp5 <- broom::tidy(fit_mi_lcs_anxie_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 0.809 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.888 NA NA
d_anxie_1 ~1 1.509 4.877 1.334 0.182
anxie_t1 ~1 4.581 16.255 137.938 0.000
d_anxie_1 ~~ d_anxie_1 0.087 0.905 1.625 0.104
d_anxie_1 ~ anxie_t1 -0.338 -0.308 -1.389 0.165
d_anxie_1 ~~ sa06_01_t1 0.029 0.102 1.198 0.231
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.188 4.397 75.805 0.000

Correlation of general acceptance goal with anxiety change score (ideal-self) is not significantly different from zero, r = 0.029, p = 0.231.

3.7.2.39 Anxiety - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 8053.558 8135.333 0.94 0.073 0.1
# parameters of interest
params_lcs_anxie_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_anxie_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sa07_10_t1", "sa07_10_t1 ~~ sa07_10_t1", # acceptance goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 0.965 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.474 NA NA
d_anxie_1 ~1 0.407 0.938 2.668 0.008
anxie_t1 ~1 2.666 3.021 37.602 0.000
d_anxie_1 ~~ d_anxie_1 0.182 0.971 3.443 0.001
d_anxie_1 ~ anxie_t1 -0.083 -0.170 -1.420 0.156
d_anxie_1 ~~ sa07_10_t1 -0.012 -0.020 -0.188 0.851
sa07_10_t1 ~~ sa07_10_t1 2.110 1.000 20.984 0.000

Correlation of specific, facet-level acceptance goals with anxiety change score (current-self) is not significantly different from zero, r = -0.012, p = 0.851.

3.7.2.40 Anxiety - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7693.509 7775.284 0.865 0.051 0.052
# parameters of interest
params_lcs_anxie_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_anxie_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sa07_10_t1", "sa07_10_t1 ~~ sa07_10_t1", # acceptance goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 0.803 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.887 NA NA
d_anxie_1 ~1 1.493 4.791 1.274 0.203
anxie_t1 ~1 4.581 16.247 137.369 0.000
d_anxie_1 ~~ d_anxie_1 0.088 0.908 1.640 0.101
d_anxie_1 ~ anxie_t1 -0.335 -0.303 -1.327 0.185
d_anxie_1 ~~ sa07_10_t1 -0.007 -0.017 -0.133 0.894
sa07_10_t1 ~~ sa07_10_t1 2.110 1.000 20.985 0.000

Correlation of specific, facet-level acceptance goals with anxiety change score (ideal-self) is not significantly different from zero, r = -0.007, p = 0.894.

3.7.2.41 Depression - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7548.099 7629.873 0.967 0.068 0.063
# parameters of interest
params_lcs_depre_curr_hyp5 <- broom::tidy(fit_mi_lcs_depre_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.021 NA NA
d_depre_1 =~ depre_t2 1.000 0.535 NA NA
d_depre_1 ~1 0.660 1.638 5.094 0.000
depre_t1 ~1 2.893 3.765 42.520 0.000
d_depre_1 ~~ d_depre_1 0.148 0.910 4.232 0.000
d_depre_1 ~ depre_t1 -0.158 -0.301 -3.698 0.000
d_depre_1 ~~ sa06_01_t1 0.013 0.036 0.462 0.644
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.680 0.000
sa06_01_t1 ~1 4.189 4.398 75.879 0.000

Correlation of general acceptance goal with depression change score (current-self) is not significantly different from zero, r = 0.013, p = 0.644.

3.7.2.42 Depression - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6134.599 6216.373 0.918 0.058 0.063
# parameters of interest
params_lcs_depre_ideal_hyp5 <- broom::tidy(fit_mi_lcs_depre_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 0.898 NA NA
d_depre_1 =~ depre_t2 1.000 0.575 NA NA
d_depre_1 ~1 0.374 2.423 0.602 0.547
depre_t1 ~1 4.398 18.225 124.874 0.000
d_depre_1 ~~ d_depre_1 0.023 0.982 1.552 0.121
d_depre_1 ~ depre_t1 -0.085 -0.133 -0.609 0.542
d_depre_1 ~~ sa06_01_t1 0.007 0.047 0.473 0.636
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.188 4.397 75.710 0.000

Correlation of general acceptance goal with depression change score (ideal-self) is not significantly different from zero, r = 0.007, p = 0.636.

3.7.2.43 Depression - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7814.895 7896.67 0.922 0.108 0.132
# parameters of interest
params_lcs_depre_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_depre_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sa07_11_t1", "sa07_11_t1 ~~ sa07_11_t1", # acceptance goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.044 NA NA
d_depre_1 =~ depre_t2 1.000 0.561 NA NA
d_depre_1 ~1 0.742 1.796 4.517 0.000
depre_t1 ~1 2.893 3.763 42.512 0.000
d_depre_1 ~~ d_depre_1 0.150 0.880 4.171 0.000
d_depre_1 ~ depre_t1 -0.186 -0.346 -3.490 0.000
d_depre_1 ~~ sa07_11_t1 -0.056 -0.097 -0.913 0.361
sa07_11_t1 ~~ sa07_11_t1 2.236 1.000 22.671 0.000

Correlation of specific, facet-level acceptance goals with depression change score (current-self) is not significantly different from zero, r = -0.056, p = 0.361.

3.7.2.44 Depression - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6401.13 6482.905 0.908 0.062 0.067
# parameters of interest
params_lcs_depre_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_depre_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sa07_11_t1", "sa07_11_t1 ~~ sa07_11_t1", # acceptance goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 0.903 NA NA
d_depre_1 =~ depre_t2 1.000 0.583 NA NA
d_depre_1 ~1 0.417 2.677 0.664 0.506
depre_t1 ~1 4.398 18.240 124.870 0.000
d_depre_1 ~~ d_depre_1 0.024 0.978 1.572 0.116
d_depre_1 ~ depre_t1 -0.095 -0.147 -0.672 0.501
d_depre_1 ~~ sa07_11_t1 -0.028 -0.121 -1.134 0.257
sa07_11_t1 ~~ sa07_11_t1 2.235 1.000 22.669 0.000

Correlation of specific, facet-level acceptance goals with depression change score (ideal-self) is not significantly different from zero, r = -0.028, p = 0.257.

3.7.2.45 Volatility - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7653.607 7735.382 0.989 0.037 0.057
# parameters of interest
params_lcs_volat_curr_hyp5 <- broom::tidy(fit_mi_lcs_volat_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.067 NA NA
d_volat_1 =~ volat_t2 1.000 0.611 NA NA
d_volat_1 ~1 0.594 1.089 3.793 0.000
volat_t1 ~1 3.222 3.382 44.429 0.000
d_volat_1 ~~ d_volat_1 0.252 0.846 4.229 0.000
d_volat_1 ~ volat_t1 -0.224 -0.392 -4.644 0.000
d_volat_1 ~~ sa06_01_t1 -0.068 -0.142 -1.701 0.089
sa06_01_t1 ~~ sa06_01_t1 0.908 1.000 9.663 0.000
sa06_01_t1 ~1 4.191 4.398 76.072 0.000

Correlation of general acceptance goal with volatility change score (current-self) is not significantly different from zero, r = -0.068, p = 0.089.

3.7.2.46 Volatility - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6950.425 7032.199 0.941 0.044 0.053
# parameters of interest
params_lcs_volat_ideal_hyp5 <- broom::tidy(fit_mi_lcs_volat_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 0.836 NA NA
d_volat_1 =~ volat_t2 1.000 0.762 NA NA
d_volat_1 ~1 0.392 1.002 1.781 0.075
volat_t1 ~1 1.679 3.916 40.058 0.000
d_volat_1 ~~ d_volat_1 0.146 0.952 2.942 0.003
d_volat_1 ~ volat_t1 -0.200 -0.219 -1.514 0.130
d_volat_1 ~~ sa06_01_t1 -0.065 -0.178 -2.077 0.038
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.818 0.000

The correlation of general acceptance goal with the volatility change score (ideal-self) is significantly different from zero, r = -0.065, p = 0.038.

3.7.2.47 Volatility - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7834.91 7916.685 0.966 0.065 0.085
# parameters of interest
params_lcs_volat_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_volat_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sa07_12_t1", "sa07_12_t1 ~~ sa07_12_t1", # acceptance goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.077 NA NA
d_volat_1 =~ volat_t2 1.000 0.623 NA NA
d_volat_1 ~1 0.633 1.147 3.783 0.000
volat_t1 ~1 3.222 3.378 44.411 0.000
d_volat_1 ~~ d_volat_1 0.253 0.833 4.231 0.000
d_volat_1 ~ volat_t1 -0.236 -0.409 -4.547 0.000
d_volat_1 ~~ sa07_12_t1 -0.011 -0.017 -0.183 0.855
sa07_12_t1 ~~ sa07_12_t1 1.653 1.000 17.247 0.000

Correlation of specific, facet-level acceptance goals with volatility change score (current-self) is not significantly different from zero, r = -0.011, p = 0.855.

3.7.2.48 Volatility - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7132.747 7214.522 0.942 0.044 0.05
# parameters of interest
params_lcs_volat_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_volat_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sa07_12_t1", "sa07_12_t1 ~~ sa07_12_t1", # acceptance goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 0.827 NA NA
d_volat_1 =~ volat_t2 1.000 0.748 NA NA
d_volat_1 ~1 0.355 0.914 1.590 0.112
volat_t1 ~1 1.679 3.911 40.058 0.000
d_volat_1 ~~ d_volat_1 0.145 0.961 2.843 0.004
d_volat_1 ~ volat_t1 -0.178 -0.196 -1.329 0.184
d_volat_1 ~~ sa07_12_t1 -0.010 -0.021 -0.253 0.800
sa07_12_t1 ~~ sa07_12_t1 1.653 1.000 17.245 0.000

Correlation of specific, facet-level acceptance goals with volatility change score (ideal-self) is not significantly different from zero, r = -0.01, p = 0.8.

3.7.2.49 Curiosity - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7383.408 7465.182 0.963 0.047 0.056
# parameters of interest
params_lcs_curio_curr_hyp5 <- broom::tidy(fit_mi_lcs_curio_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.098 NA NA
d_curio_1 =~ curio_t2 1.000 0.672 NA NA
d_curio_1 ~1 1.200 3.282 2.997 0.003
curio_t1 ~1 4.111 6.885 82.332 0.000
d_curio_1 ~~ d_curio_1 0.107 0.802 2.955 0.003
d_curio_1 ~ curio_t1 -0.273 -0.445 -2.918 0.004
d_curio_1 ~~ sa06_01_t1 0.011 0.035 0.387 0.699
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.684 0.000
sa06_01_t1 ~1 4.188 4.397 75.846 0.000

Correlation of general acceptance goal with curiosity change score (current-self) is not significantly different from zero, r = 0.011, p = 0.699.

3.7.2.50 Curiosity - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7321.833 7403.607 1 0 0.03
# parameters of interest
params_lcs_curio_ideal_hyp5 <- broom::tidy(fit_mi_lcs_curio_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 0.969 NA NA
d_curio_1 =~ curio_t2 1.000 0.677 NA NA
d_curio_1 ~1 0.947 4.125 1.819 0.069
curio_t1 ~1 4.519 13.762 126.817 0.000
d_curio_1 ~~ d_curio_1 0.048 0.908 1.790 0.073
d_curio_1 ~ curio_t1 -0.212 -0.303 -1.858 0.063
d_curio_1 ~~ sa06_01_t1 0.024 0.115 1.177 0.239
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.682 0.000
sa06_01_t1 ~1 4.189 4.398 75.818 0.000

Correlation of general acceptance goal with curiosity change score (ideal-self) is not significantly different from zero, r = 0.024, p = 0.239.

3.7.2.51 Curiosity - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7576.126 7657.901 0.914 0.074 0.089
# parameters of interest
params_lcs_curio_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_curio_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sa07_13_t1", "sa07_13_t1 ~~ sa07_13_t1", # acceptance goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.144 NA NA
d_curio_1 =~ curio_t2 1.000 0.747 NA NA
d_curio_1 ~1 1.439 3.699 3.570 0.000
curio_t1 ~1 4.111 6.897 82.570 0.000
d_curio_1 ~~ d_curio_1 0.112 0.743 3.107 0.002
d_curio_1 ~ curio_t1 -0.331 -0.507 -3.504 0.000
d_curio_1 ~~ sa07_13_t1 -0.119 -0.265 -2.508 0.012
sa07_13_t1 ~~ sa07_13_t1 1.781 1.000 14.771 0.000

The correlation of specific, facet-level acceptance goals with the curiosity change score (current-self) is significantly different from zero, r = -0.119, p = 0.012.

3.7.2.52 Curiosity - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7518.763 7600.538 0.983 0.024 0.045
# parameters of interest
params_lcs_curio_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_curio_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sa07_13_t1", "sa07_13_t1 ~~ sa07_13_t1", # acceptance goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 0.975 NA NA
d_curio_1 =~ curio_t2 1.000 0.694 NA NA
d_curio_1 ~1 1.017 4.297 2.016 0.044
curio_t1 ~1 4.520 13.587 126.887 0.000
d_curio_1 ~~ d_curio_1 0.050 0.898 1.854 0.064
d_curio_1 ~ curio_t1 -0.227 -0.319 -2.060 0.039
d_curio_1 ~~ sa07_13_t1 -0.066 -0.222 -1.917 0.055
sa07_13_t1 ~~ sa07_13_t1 1.779 1.000 14.761 0.000

Correlation of specific, facet-level acceptance goals with curiosity change score (ideal-self) is not significantly different from zero, r = -0.066, p = 0.055.

3.7.2.53 Aesthetic - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7486.862 7568.637 0.982 0.045 0.056
# parameters of interest
params_lcs_aesth_curr_hyp5 <- broom::tidy(fit_mi_lcs_aesth_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.101 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.616 NA NA
d_aesth_1 ~1 0.710 21.164 5.045 0.000
aesth_t1 ~1 2.913 48.559 47.310 0.000
d_aesth_1 ~~ d_aesth_1 0.001 0.809 4.563 0.000
d_aesth_1 ~ aesth_t1 -0.244 -0.437 -5.084 0.000
d_aesth_1 ~~ sa06_01_t1 -0.003 -0.116 -1.498 0.134
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.189 4.398 75.812 0.000

Correlation of general acceptance goal with aesthetic change score (current-self) is not significantly different from zero, r = -0.003, p = 0.134.

3.7.2.54 Aesthetic - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7367.869 7449.644 0.971 0.05 0.069
# parameters of interest
params_lcs_aesth_ideal_hyp5 <- broom::tidy(fit_mi_lcs_aesth_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.952 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.677 NA NA
d_aesth_1 ~1 0.632 13.937 2.582 0.010
aesth_t1 ~1 3.158 49.486 45.332 0.000
d_aesth_1 ~~ d_aesth_1 0.002 0.920 0.435 0.664
d_aesth_1 ~ aesth_t1 -0.201 -0.283 -2.642 0.008
d_aesth_1 ~~ sa06_01_t1 0.003 0.074 0.735 0.462
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.684 0.000
sa06_01_t1 ~1 4.189 4.398 75.888 0.000

Correlation of general acceptance goal with aesthetic change score (ideal-self) is not significantly different from zero, r = 0.003, p = 0.462.

3.7.2.55 Aesthetic - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7707.395 7789.17 0.972 0.056 0.072
# parameters of interest
params_lcs_aesth_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_aesth_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sa07_14_t1", "sa07_14_t1 ~~ sa07_14_t1", # acceptance goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.091 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.603 NA NA
d_aesth_1 ~1 0.676 19.678 4.768 0.000
aesth_t1 ~1 2.913 46.855 47.316 0.000
d_aesth_1 ~~ d_aesth_1 0.001 0.823 4.533 0.000
d_aesth_1 ~ aesth_t1 -0.233 -0.421 -4.789 0.000
d_aesth_1 ~~ sa07_14_t1 -0.001 -0.028 -0.347 0.729
sa07_14_t1 ~~ sa07_14_t1 1.892 1.000 18.908 0.000

Correlation of specific, facet-level acceptance goals with aesthetic change score (current-self) is not significantly different from zero, r = -0.001, p = 0.729.

3.7.2.56 Aesthetic - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7585.467 7667.242 0.989 0.031 0.043
# parameters of interest
params_lcs_aesth_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_aesth_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sa07_14_t1", "sa07_14_t1 ~~ sa07_14_t1", # acceptance goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.944 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.666 NA NA
d_aesth_1 ~1 0.588 12.797 2.507 0.012
aesth_t1 ~1 3.158 48.459 45.325 0.000
d_aesth_1 ~~ d_aesth_1 0.002 0.929 0.444 0.657
d_aesth_1 ~ aesth_t1 -0.187 -0.266 -2.563 0.010
d_aesth_1 ~~ sa07_14_t1 -0.006 -0.097 -0.738 0.461
sa07_14_t1 ~~ sa07_14_t1 1.892 1.000 18.905 0.000

Correlation of specific, facet-level acceptance goals with aesthetic change score (ideal-self) is not significantly different from zero, r = -0.006, p = 0.461.

3.7.2.57 Imagination - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7336.363 7418.137 0.979 0.043 0.045
# parameters of interest
params_lcs_imagi_curr_hyp5 <- broom::tidy(fit_mi_lcs_imagi_curr_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_hyp5, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.073 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.520 NA NA
d_imagi_1 ~1 0.756 2.165 3.261 0.001
imagi_t1 ~1 3.619 5.028 67.333 0.000
d_imagi_1 ~~ d_imagi_1 0.104 0.858 3.128 0.002
d_imagi_1 ~ imagi_t1 -0.183 -0.377 -3.066 0.002
d_imagi_1 ~~ sa06_01_t1 0.026 0.086 0.861 0.389
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.688 0.000
sa06_01_t1 ~1 4.188 4.397 75.809 0.000

Correlation of general acceptance goal with imagination change score (current-self) is not significantly different from zero, r = 0.026, p = 0.389.

3.7.2.58 Imagination - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 6829.978 6911.752 0.947 0.041 0.058
# parameters of interest
params_lcs_imagi_ideal_hyp5 <- broom::tidy(fit_mi_lcs_imagi_ideal_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_hyp5, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.879 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.675 NA NA
d_imagi_1 ~1 0.643 2.418 0.997 0.319
imagi_t1 ~1 4.609 13.316 141.555 0.000
d_imagi_1 ~~ d_imagi_1 0.068 0.963 2.580 0.010
d_imagi_1 ~ imagi_t1 -0.148 -0.193 -1.076 0.282
d_imagi_1 ~~ sa06_01_t1 -0.014 -0.058 -0.585 0.559
sa06_01_t1 ~~ sa06_01_t1 0.907 1.000 9.683 0.000
sa06_01_t1 ~1 4.188 4.397 75.695 0.000

Correlation of general acceptance goal with imagination change score (ideal-self) is not significantly different from zero, r = -0.014, p = 0.559.

3.7.2.59 Imagination - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7584.867 7666.641 0.941 0.074 0.098
# parameters of interest
params_lcs_imagi_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_imagi_curr_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sa07_15_t1", "sa07_15_t1 ~~ sa07_15_t1", # acceptance goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.088 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.537 NA NA
d_imagi_1 ~1 0.816 2.295 3.574 0.000
imagi_t1 ~1 3.620 5.027 67.373 0.000
d_imagi_1 ~~ d_imagi_1 0.106 0.837 3.179 0.001
d_imagi_1 ~ imagi_t1 -0.200 -0.404 -3.386 0.001
d_imagi_1 ~~ sa07_15_t1 -0.060 -0.128 -1.278 0.201
sa07_15_t1 ~~ sa07_15_t1 2.101 1.000 21.090 0.000

Correlation of specific, facet-level acceptance goals with imagination change score (current-self) is not significantly different from zero, r = -0.06, p = 0.201.

3.7.2.60 Imagination - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 22 7079.644 7161.418 0.971 0.03 0.053
# parameters of interest
params_lcs_imagi_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_imagi_ideal_specif_hyp5, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sa07_15_t1", "sa07_15_t1 ~~ sa07_15_t1", # acceptance goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_specif_hyp5, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.882 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.681 NA NA
d_imagi_1 ~1 0.679 2.546 1.072 0.284
imagi_t1 ~1 4.609 13.345 141.574 0.000
d_imagi_1 ~~ d_imagi_1 0.068 0.959 2.598 0.009
d_imagi_1 ~ imagi_t1 -0.156 -0.202 -1.152 0.249
d_imagi_1 ~~ sa07_15_t1 0.006 0.015 0.163 0.870
sa07_15_t1 ~~ sa07_15_t1 2.100 1.000 21.074 0.000

Correlation of specific, facet-level acceptance goals with imagination change score (ideal-self) is not significantly different from zero, r = 0.006, p = 0.87.

3.7.3 Hyp 5: Effects summary

Run models for all facets with a template & loop:

Show the code
# create df for table:

df_table_hyp5 <- bind_rows(
  #traits
  params_lcs_extra_curr_hyp5 %>% filter(term=="d_extra_1 ~~ sa06_01_t1"),
  params_lcs_extra_ideal_hyp5 %>% filter(term=="d_extra_1 ~~ sa06_01_t1"),
  params_lcs_extra_curr_specif_hyp5 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_extra_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_agree_curr_hyp5 %>% filter(term=="d_agree_1 ~~ sa06_01_t1"),
  params_lcs_agree_ideal_hyp5 %>% filter(term=="d_agree_1 ~~ sa06_01_t1"),
  params_lcs_agree_curr_specif_hyp5 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_agree_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_consc_curr_hyp5 %>% filter(term=="d_consc_1 ~~ sa06_01_t1"),
  params_lcs_consc_ideal_hyp5 %>% filter(term=="d_consc_1 ~~ sa06_01_t1"),
  params_lcs_consc_curr_specif_hyp5 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_consc_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_neuro_curr_hyp5 %>% filter(term=="d_neuro_1 ~~ sa06_01_t1"),
  params_lcs_neuro_ideal_hyp5 %>% filter(term=="d_neuro_1 ~~ sa06_01_t1"),
  params_lcs_neuro_curr_specif_hyp5 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_neuro_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_openn_curr_hyp5 %>% filter(term=="d_openn_1 ~~ sa06_01_t1"),
  params_lcs_openn_ideal_hyp5 %>% filter(term=="d_openn_1 ~~ sa06_01_t1"),
  params_lcs_openn_curr_specif_hyp5 %>% filter(term=="goals ~~ d_openn_1"),
  params_lcs_openn_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_openn_1"),
  #facets
  params_lcs_socia_curr_hyp5 %>% filter(term=="d_socia_1 ~~ sa06_01_t1"),
  params_lcs_socia_ideal_hyp5 %>% filter(term=="d_socia_1 ~~ sa06_01_t1"),
  params_lcs_socia_curr_specif_hyp5 %>% filter(term=="d_socia_1 ~~ sa07_01_t1"),
  params_lcs_socia_ideal_specif_hyp5 %>% filter(term=="d_socia_1 ~~ sa07_01_t1"),
  params_lcs_asser_curr_hyp5 %>% filter(term=="d_asser_1 ~~ sa06_01_t1"),
  params_lcs_asser_ideal_hyp5 %>% filter(term=="d_asser_1 ~~ sa06_01_t1"),
  params_lcs_asser_curr_specif_hyp5 %>% filter(term=="d_asser_1 ~~ sa07_02_t1"),
  params_lcs_asser_ideal_specif_hyp5 %>% filter(term=="d_asser_1 ~~ sa07_02_t1"),
  params_lcs_energ_curr_hyp5 %>% filter(term=="d_energ_1 ~~ sa06_01_t1"),
  params_lcs_energ_ideal_hyp5 %>% filter(term=="d_energ_1 ~~ sa06_01_t1"),
  params_lcs_energ_curr_specif_hyp5 %>% filter(term=="d_energ_1 ~~ sa07_03_t1"),
  params_lcs_energ_ideal_specif_hyp5 %>% filter(term=="d_energ_1 ~~ sa07_03_t1"),
  params_lcs_compa_curr_hyp5 %>% filter(term=="d_compa_1 ~~ sa06_01_t1"),
  params_lcs_compa_ideal_hyp5 %>% filter(term=="d_compa_1 ~~ sa06_01_t1"),
  params_lcs_compa_curr_specif_hyp5 %>% filter(term=="d_compa_1 ~~ sa07_04_t1"),
  params_lcs_compa_ideal_specif_hyp5 %>% filter(term=="d_compa_1 ~~ sa07_04_t1"),
  params_lcs_respe_curr_hyp5 %>% filter(term=="d_respe_1 ~~ sa06_01_t1"),
  params_lcs_respe_ideal_hyp5 %>% filter(term=="d_respe_1 ~~ sa06_01_t1"),
  params_lcs_respe_curr_specif_hyp5 %>% filter(term=="d_respe_1 ~~ sa07_05_t1"),
  params_lcs_respe_ideal_specif_hyp5 %>% filter(term=="d_respe_1 ~~ sa07_05_t1"),
  params_lcs_trust_curr_hyp5 %>% filter(term=="d_trust_1 ~~ sa06_01_t1"),
  params_lcs_trust_ideal_hyp5 %>% filter(term=="d_trust_1 ~~ sa06_01_t1"),
  params_lcs_trust_curr_specif_hyp5 %>% filter(term=="d_trust_1 ~~ sa07_06_t1"),
  params_lcs_trust_ideal_specif_hyp5 %>% filter(term=="d_trust_1 ~~ sa07_06_t1"),
  params_lcs_organ_curr_hyp5 %>% filter(term=="d_organ_1 ~~ sa06_01_t1"),
  params_lcs_organ_ideal_hyp5 %>% filter(term=="d_organ_1 ~~ sa06_01_t1"),
  params_lcs_organ_curr_specif_hyp5 %>% filter(term=="d_organ_1 ~~ sa07_07_t1"),
  params_lcs_organ_ideal_specif_hyp5 %>% filter(term=="d_organ_1 ~~ sa07_07_t1"),
  params_lcs_produ_curr_hyp5 %>% filter(term=="d_produ_1 ~~ sa06_01_t1"),
  params_lcs_produ_ideal_hyp5 %>% filter(term=="d_produ_1 ~~ sa06_01_t1"),
  params_lcs_produ_curr_specif_hyp5 %>% filter(term=="d_produ_1 ~~ sa07_08_t1"),
  params_lcs_produ_ideal_specif_hyp5 %>% filter(term=="d_produ_1 ~~ sa07_08_t1"),
  params_lcs_respo_curr_hyp5 %>% filter(term=="d_respo_1 ~~ sa06_01_t1"),
  params_lcs_respo_ideal_hyp5 %>% filter(term=="d_respo_1 ~~ sa06_01_t1"),
  params_lcs_respo_curr_specif_hyp5 %>% filter(term=="d_respo_1 ~~ sa07_09_t1"),
  params_lcs_respo_ideal_specif_hyp5 %>% filter(term=="d_respo_1 ~~ sa07_09_t1"),
  params_lcs_anxie_curr_hyp5 %>% filter(term=="d_anxie_1 ~~ sa06_01_t1"),
  params_lcs_anxie_ideal_hyp5 %>% filter(term=="d_anxie_1 ~~ sa06_01_t1"),
  params_lcs_anxie_curr_specif_hyp5 %>% filter(term=="d_anxie_1 ~~ sa07_10_t1"),
  params_lcs_anxie_ideal_specif_hyp5 %>% filter(term=="d_anxie_1 ~~ sa07_10_t1"),
  params_lcs_depre_curr_hyp5 %>% filter(term=="d_depre_1 ~~ sa06_01_t1"),
  params_lcs_depre_ideal_hyp5 %>% filter(term=="d_depre_1 ~~ sa06_01_t1"),
  params_lcs_depre_curr_specif_hyp5 %>% filter(term=="d_depre_1 ~~ sa07_11_t1"),
  params_lcs_depre_ideal_specif_hyp5 %>% filter(term=="d_depre_1 ~~ sa07_11_t1"),
  params_lcs_volat_curr_hyp5 %>% filter(term=="d_volat_1 ~~ sa06_01_t1"),
  params_lcs_volat_ideal_hyp5 %>% filter(term=="d_volat_1 ~~ sa06_01_t1"),
  params_lcs_volat_curr_specif_hyp5 %>% filter(term=="d_volat_1 ~~ sa07_12_t1"),
  params_lcs_volat_ideal_specif_hyp5 %>% filter(term=="d_volat_1 ~~ sa07_12_t1"),
  params_lcs_curio_curr_hyp5 %>% filter(term=="d_curio_1 ~~ sa06_01_t1"),
  params_lcs_curio_ideal_hyp5 %>% filter(term=="d_curio_1 ~~ sa06_01_t1"),
  params_lcs_curio_curr_specif_hyp5 %>% filter(term=="d_curio_1 ~~ sa07_13_t1"),
  params_lcs_curio_ideal_specif_hyp5 %>% filter(term=="d_curio_1 ~~ sa07_13_t1"),
  params_lcs_aesth_curr_hyp5 %>% filter(term=="d_aesth_1 ~~ sa06_01_t1"),
  params_lcs_aesth_ideal_hyp5 %>% filter(term=="d_aesth_1 ~~ sa06_01_t1"),
  params_lcs_aesth_curr_specif_hyp5 %>% filter(term=="d_aesth_1 ~~ sa07_14_t1"),
  params_lcs_aesth_ideal_specif_hyp5 %>% filter(term=="d_aesth_1 ~~ sa07_14_t1"),
  params_lcs_imagi_curr_hyp5 %>% filter(term=="d_imagi_1 ~~ sa06_01_t1"),
  params_lcs_imagi_ideal_hyp5 %>% filter(term=="d_imagi_1 ~~ sa06_01_t1"),
  params_lcs_imagi_curr_specif_hyp5 %>% filter(term=="d_imagi_1 ~~ sa07_15_t1"),
  params_lcs_imagi_ideal_specif_hyp5 %>% filter(term=="d_imagi_1 ~~ sa07_15_t1"),
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=4),
         ref = rep(rep(c("current", "ideal"), 2), 20),
         goal = rep(c(rep("general", 2), rep("specific", 2)), 20)) %>% 
  select(trait, ref, goal, estimate, std.all, statistic, p.value)

Results summary across the Big Five traits: covariance of the latent change score and acceptance goal(s)

kable(df_table_hyp5[1:20, ], digits = 3)
trait ref goal estimate std.all statistic p.value
extraversion current general 0.059 0.138 2.234 0.025
extraversion ideal general 0.024 0.122 1.629 0.103
extraversion current specific 0.041 0.106 0.960 0.337
extraversion ideal specific -0.024 -0.135 -1.087 0.277
agreeableness current general 0.021 0.070 0.776 0.438
agreeableness ideal general 0.017 0.050 0.654 0.513
agreeableness current specific 0.011 0.044 0.517 0.605
agreeableness ideal specific -0.009 -0.030 -0.332 0.740
conscientiousness current general 0.004 0.009 0.137 0.891
conscientiousness ideal general 0.002 0.008 0.108 0.914
conscientiousness current specific 0.141 0.257 2.308 0.021
conscientiousness ideal specific 0.034 0.114 1.422 0.155
neuroticism current general 0.056 0.120 1.647 0.100
neuroticism ideal general 0.023 0.101 1.415 0.157
neuroticism current specific -0.035 -0.082 -0.894 0.371
neuroticism ideal specific -0.041 -0.212 -3.056 0.002
openness current general -0.003 -0.067 -0.791 0.429
openness ideal general -0.008 -0.272 -2.646 0.008
openness current specific 0.004 0.116 0.889 0.374
openness ideal specific 0.004 0.200 2.016 0.044

Five covariances significantly differ from zero:

  • changes in current-level neuroticism covary with the general acceptance goal
  • changes in current-level conscientiousness covary with the specific acceptance goals (latent factor of the three C facets)
  • changes in ideal-level neuroticism covary with the specific acceptance goals (latent factor of the three N facets)
  • changes in ideal-level openness covary with the general acceptance goal
  • changes in ideal-level openness covary with the specific acceptance goals (latent factor of the three O facets)

Results summary across the Big Five facets: covariance of the latent change score and acceptance goal(s)

kable(df_table_hyp5[21:80, ], digits = 3)
trait ref goal estimate std.all statistic p.value
sociability current general 0.057 0.160 2.042 0.041
sociability ideal general 0.003 0.011 0.132 0.895
sociability current specific -0.007 -0.013 -0.143 0.886
sociability ideal specific -0.047 -0.136 -1.014 0.311
assertiveness current general 0.041 0.135 1.624 0.104
assertiveness ideal general 0.020 0.114 1.198 0.231
assertiveness current specific -0.004 -0.009 -0.100 0.920
assertiveness ideal specific -0.019 -0.074 -0.773 0.439
energy current general -0.011 -0.043 -0.597 0.551
energy ideal general -0.020 -0.177 -1.232 0.218
energy current specific 0.041 0.113 1.226 0.220
energy ideal specific 0.021 0.129 0.975 0.330
compassion current general 0.085 0.201 1.935 0.053
compassion ideal general 0.043 0.116 1.128 0.259
compassion current specific 0.027 0.048 0.578 0.563
compassion ideal specific -0.060 -0.120 -1.195 0.232
respectfulness current general 0.017 0.071 0.737 0.461
respectfulness ideal general 0.002 0.007 0.078 0.938
respectfulness current specific 0.004 0.013 0.146 0.884
respectfulness ideal specific -0.021 -0.069 -0.738 0.461
trust current general -0.003 -0.010 -0.108 0.914
trust ideal general -0.039 -0.148 -1.579 0.114
trust current specific 0.055 0.142 1.639 0.101
trust ideal specific 0.026 0.068 0.747 0.455
organization current general 0.022 0.055 0.692 0.489
organization ideal general 0.011 0.052 0.599 0.549
organization current specific 0.162 0.248 2.390 0.017
organization ideal specific 0.041 0.117 1.288 0.198
productiveness current general -0.011 -0.032 -0.413 0.679
productiveness ideal general -0.019 -0.084 -0.929 0.353
productiveness current specific 0.090 0.170 1.504 0.132
productiveness ideal specific 0.011 0.034 0.371 0.710
responsibility current general 0.018 0.079 0.680 0.496
responsibility ideal general 0.010 0.028 0.291 0.771
responsibility current specific -0.168 -0.447 -3.336 0.001
responsibility ideal specific -0.047 -0.089 -1.008 0.314
anxiety current general 0.017 0.043 0.442 0.658
anxiety ideal general 0.029 0.102 1.198 0.231
anxiety current specific -0.012 -0.020 -0.188 0.851
anxiety ideal specific -0.007 -0.017 -0.133 0.894
depression current general 0.013 0.036 0.462 0.644
depression ideal general 0.007 0.047 0.473 0.636
depression current specific -0.056 -0.097 -0.913 0.361
depression ideal specific -0.028 -0.121 -1.134 0.257
volatility current general -0.068 -0.142 -1.701 0.089
volatility ideal general -0.065 -0.178 -2.077 0.038
volatility current specific -0.011 -0.017 -0.183 0.855
volatility ideal specific -0.010 -0.021 -0.253 0.800
curiosity current general 0.011 0.035 0.387 0.699
curiosity ideal general 0.024 0.115 1.177 0.239
curiosity current specific -0.119 -0.265 -2.508 0.012
curiosity ideal specific -0.066 -0.222 -1.917 0.055
aesthetic current general -0.003 -0.116 -1.498 0.134
aesthetic ideal general 0.003 0.074 0.735 0.462
aesthetic current specific -0.001 -0.028 -0.347 0.729
aesthetic ideal specific -0.006 -0.097 -0.738 0.461
imagination current general 0.026 0.086 0.861 0.389
imagination ideal general -0.014 -0.058 -0.585 0.559
imagination current specific -0.060 -0.128 -1.278 0.201
imagination ideal specific 0.006 0.015 0.163 0.870

Looking at the facets, we find five covariances that significantly differ from zero (relatively unsystematic across facets / current-ideal / goal dimension): Changes in current-level sociability covary with the general acceptance goal. Further, changes in current-level organization, responsibility, and curiosity covary with the respective specific facet acceptance goal. Lastly, for ideal-level personality, only changes in volatility covary with the general acceptance goal.

3.8 Hypothesis 6: Desire to change and frequency of skill-building behaviors as moderators of change in personality in skill-building group

Desire to change and frequency of skill-building behaviors measured at the follow-up assessment will be positively related to change in current-self ratings in the skill-building group.

To test this hypothesis, we will estimate the mean-level difference in current trait ratings between baseline and follow up using a latent change model for each big five domain and facet. We will then include two moderators. The first will indicate how much the individual wanted to change on a given big five domain or facet. The second will indicate their frequency of skill-building behaviors. We will estimate the main effects of each of these variables and the interaction between these variables on the trait change score.

Reshape and split data set by intervention group:

Show the code
df_sbsa_wide_pers_sb_mod <- df_sbsa %>% 
  filter(rando=="Skill-Building") %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("bf05", # only need current-level
                                  "sb07", # facet-specific change goals
                                  "sb04"))) %>% # frequency skill-building behaviors
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with(c("bf05", "sb07", "sb04")))) %>% 
  select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, 
            sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, 
            sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, 
            sb04_01_t1, sb04_02_t1, sb04_03_t1)) # frequency of skill-building behaviors measured at T2
colnames(df_sbsa_wide_pers_sb_mod)

3.8.1 Big Five traits

Run models for all traits with a template & loop:

Show the code
# create templates:

# 1st, for facet-specific change goals

trait_template_mod_goal <- '
trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 + lamb4*ind04_t1 + lamb5*ind05_t1 + lamb6*ind06_t1 + lamb7*ind07_t1 + lamb8*ind08_t1 + lamb9*ind09_t1 + lamb10*ind10_t1 + lamb11*ind11_t1 + lamb12*ind12_t1 # This specifies the measurement model for trait_t1 
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 + lamb4*ind04_t2 + lamb5*ind05_t2 + lamb6*ind06_t2 + lamb7*ind07_t2 + lamb8*ind08_t2 + lamb9*ind09_t2 + lamb10*ind10_t2 + lamb11*ind11_t2 + lamb12*ind12_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadings

goals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderator

trait_t2 ~ 1*trait_t1     # This parameter regresses trait_t2 perfectly on trait_t1
d_trait_1 =~ 1*trait_t2   # This defines the latent change score factor as measured perfectly by scores on trait_t2
trait_t2 ~ 0*1            # This line constrains the intercept of trait_t2 to 0
trait_t2 ~~ 0*trait_t2    # This fixes the variance of trait_t2 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t1 ~ 1               # This estimates the intercept of trait_t1 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t1 ~~ trait_t1         # This estimates the variance of trait_t1 
trait_t1 ~ goals               # This estimates the moderation effect on personality at T1
d_trait_1 ~ trait_t1 + goals   # This estimates the self-feedback parameter and the moderation effect on the change score

goals ~ 0*1            # This fixes the intercept of the moderator to 0
goals ~~ goals         # This estimates the variance of the moderator

ind01_t1 ~~ ind01_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind02_t1 ~~ ind02_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind03_t1 ~~ ind03_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind04_t1 ~~ ind04_t2   # This allows residual covariance on indicator X4 across T1 and T2
ind05_t1 ~~ ind05_t2   # This allows residual covariance on indicator X5 across T1 and T2
ind06_t1 ~~ ind06_t2   # This allows residual covariance on indicator X6 across T1 and T2
ind07_t1 ~~ ind07_t2   # This allows residual covariance on indicator X7 across T1 and T2
ind08_t1 ~~ ind08_t2   # This allows residual covariance on indicator X8 across T1 and T2
ind09_t1 ~~ ind09_t2   # This allows residual covariance on indicator X9 across T1 and T2
ind10_t1 ~~ ind10_t2   # This allows residual covariance on indicator X10 across T1 and T2
ind11_t1 ~~ ind11_t2   # This allows residual covariance on indicator X11 across T1 and T2
ind12_t1 ~~ ind12_t2   # This allows residual covariance on indicator X12 across T1 and T2

ind01_t1 ~~ res1*ind01_t1   # This allows residual variance on indicator X1 at T1 
ind02_t1 ~~ res2*ind02_t1   # This allows residual variance on indicator X2 at T1
ind03_t1 ~~ res3*ind03_t1   # This allows residual variance on indicator X3 at T1
ind04_t1 ~~ res4*ind04_t1   # This allows residual variance on indicator X4 at T1
ind05_t1 ~~ res5*ind05_t1   # This allows residual variance on indicator X5 at T1
ind06_t1 ~~ res6*ind06_t1   # This allows residual variance on indicator X6 at T1 
ind07_t1 ~~ res7*ind07_t1   # This allows residual variance on indicator X7 at T1
ind08_t1 ~~ res8*ind08_t1   # This allows residual variance on indicator X8 at T1
ind09_t1 ~~ res9*ind09_t1   # This allows residual variance on indicator X9 at T1
ind10_t1 ~~ res10*ind10_t1  # This allows residual variance on indicator X10 at T1
ind11_t1 ~~ res11*ind11_t1  # This allows residual variance on indicator X11 at T1
ind12_t1 ~~ res12*ind12_t1  # This allows residual variance on indicator X12 at T1

ind01_t2 ~~ res1*ind01_t2  # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2  # This allows residual variance on indicator X2 at T2 
ind03_t2 ~~ res3*ind03_t2  # This allows residual variance on indicator X3 at T2
ind04_t2 ~~ res4*ind04_t2  # This allows residual variance on indicator X4 at T2
ind05_t2 ~~ res5*ind05_t2  # This allows residual variance on indicator X5 at T2
ind06_t2 ~~ res6*ind06_t2  # This allows residual variance on indicator X6 at T2 
ind07_t2 ~~ res7*ind07_t2  # This allows residual variance on indicator X7 at T2 
ind08_t2 ~~ res8*ind08_t2  # This allows residual variance on indicator X8 at T2
ind09_t2 ~~ res9*ind09_t2  # This allows residual variance on indicator X9 at T2
ind10_t2 ~~ res10*ind10_t2 # This allows residual variance on indicator X10 at T2
ind11_t2 ~~ res11*ind11_t2 # This allows residual variance on indicator X11 at T2
ind12_t2 ~~ res12*ind12_t2 # This allows residual variance on indicator X12 at T2

ind01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind03_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind04_t1 ~ m4*1     # This estimates the intercept of X4 at T1
ind05_t1 ~ m5*1     # This estimates the intercept of X5 at T1
ind06_t1 ~ m6*1     # This estimates the intercept of X6 at T1
ind07_t1 ~ m7*1     # This estimates the intercept of X7 at T1
ind08_t1 ~ m8*1     # This estimates the intercept of X8 at T1
ind09_t1 ~ m9*1     # This estimates the intercept of X9 at T1
ind10_t1 ~ m10*1    # This estimates the intercept of X10 at T1
ind11_t1 ~ m11*1    # This estimates the intercept of X11 at T1
ind12_t1 ~ m12*1    # This estimates the intercept of X12 at T1

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind04_t2 ~ m4*1     # This estimates the intercept of X4 at T2
ind05_t2 ~ m5*1     # This estimates the intercept of X5 at T2
ind06_t2 ~ m6*1     # This estimates the intercept of X6 at T2
ind07_t2 ~ m7*1     # This estimates the intercept of X7 at T2
ind08_t2 ~ m8*1     # This estimates the intercept of X8 at T2
ind09_t2 ~ m9*1     # This estimates the intercept of X9 at T2
ind10_t2 ~ m10*1    # This estimates the intercept of X10 at T2
ind11_t2 ~ m11*1    # This estimates the intercept of X11 at T2
ind12_t2 ~ m12*1    # This estimates the intercept of X12 at T2

ind_goal_1 ~~ ind_goal_1
ind_goal_2 ~~ ind_goal_2
ind_goal_3 ~~ ind_goal_3

ind_goal_1 ~ 1
ind_goal_2 ~ 1
ind_goal_3 ~ 1
'

trait_facets_nrs <- list(a1 = c(1:3), b2 = c(4:6), c3 = c(7:9), d4 = c(10:12), e5 = c(13:15)) # matching facet nrs to traits 

# loop across 5 traits
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[5]], item_nrs)
  mod_names = paste0("sb07_", str_pad(trait_facets_nrs[[i]], 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(trait_template_mod_goal, 
                                       c("trait" = short_name,
                                         "ind01" = items[1], "ind02" = items[2], "ind03" = items[3], "ind04" = items[4],
                                         "ind05" = items[5], "ind06" = items[6], "ind07" = items[7], "ind08" = items[8],
                                         "ind09" = items[9], "ind10" = items[10], "ind11" = items[11], "ind12" = items[12],
                                         "ind_goal_1" = mod_names[1], "ind_goal_2" = mod_names[2], "ind_goal_3" = mod_names[3]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), trait_model_fit))
}  

# 2nd, for frequency of skill-building behavior

trait_template_mod_frequ <- '
trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 + lamb4*ind04_t1 + lamb5*ind05_t1 + lamb6*ind06_t1 + lamb7*ind07_t1 + lamb8*ind08_t1 + lamb9*ind09_t1 + lamb10*ind10_t1 + lamb11*ind11_t1 + lamb12*ind12_t1 # This specifies the measurement model for extra_t1 
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 + lamb4*ind04_t2 + lamb5*ind05_t2 + lamb6*ind06_t2 + lamb7*ind07_t2 + lamb8*ind08_t2 + lamb9*ind09_t2 + lamb10*ind10_t2 + lamb11*ind11_t2 + lamb12*ind12_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

frequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderator

trait_t2 ~ 1*trait_t1     # This parameter regresses trait_t2 perfectly on trait_t1
d_trait_1 =~ 1*trait_t2   # This defines the latent change score factor as measured perfectly by scores on trait_t2
trait_t2 ~ 0*1            # This line constrains the intercept of trait_t2 to 0
trait_t2 ~~ 0*trait_t2    # This fixes the variance of trait_t2 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t1 ~ 1               # This estimates the intercept of trait_t1 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t1 ~~ trait_t1         # This estimates the variance of trait_t1 
trait_t1 ~ frequ               # This estimates the moderation effect on personality at T1
d_trait_1 ~ trait_t1 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind01_t1 ~~ ind01_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind02_t1 ~~ ind02_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind03_t1 ~~ ind03_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind04_t1 ~~ ind04_t2   # This allows residual covariance on indicator X4 across T1 and T2
ind05_t1 ~~ ind05_t2   # This allows residual covariance on indicator X5 across T1 and T2
ind06_t1 ~~ ind06_t2   # This allows residual covariance on indicator X6 across T1 and T2
ind07_t1 ~~ ind07_t2   # This allows residual covariance on indicator X7 across T1 and T2
ind08_t1 ~~ ind08_t2   # This allows residual covariance on indicator X8 across T1 and T2
ind09_t1 ~~ ind09_t2   # This allows residual covariance on indicator X9 across T1 and T2
ind10_t1 ~~ ind10_t2   # This allows residual covariance on indicator X10 across T1 and T2
ind11_t1 ~~ ind11_t2   # This allows residual covariance on indicator X11 across T1 and T2
ind12_t1 ~~ ind12_t2   # This allows residual covariance on indicator X12 across T1 and T2

ind01_t1 ~~ res1*ind01_t1   # This allows residual variance on indicator X1 at T1 
ind02_t1 ~~ res2*ind02_t1   # This allows residual variance on indicator X2 at T1
ind03_t1 ~~ res3*ind03_t1   # This allows residual variance on indicator X3 at T1
ind04_t1 ~~ res4*ind04_t1   # This allows residual variance on indicator X4 at T1
ind05_t1 ~~ res5*ind05_t1   # This allows residual variance on indicator X5 at T1
ind06_t1 ~~ res6*ind06_t1   # This allows residual variance on indicator X6 at T1 
ind07_t1 ~~ res7*ind07_t1   # This allows residual variance on indicator X7 at T1
ind08_t1 ~~ res8*ind08_t1   # This allows residual variance on indicator X8 at T1
ind09_t1 ~~ res9*ind09_t1   # This allows residual variance on indicator X9 at T1
ind10_t1 ~~ res10*ind10_t1  # This allows residual variance on indicator X10 at T1
ind11_t1 ~~ res11*ind11_t1  # This allows residual variance on indicator X11 at T1
ind12_t1 ~~ res12*ind12_t1  # This allows residual variance on indicator X12 at T1

ind01_t2 ~~ res1*ind01_t2  # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2  # This allows residual variance on indicator X2 at T2 
ind03_t2 ~~ res3*ind03_t2  # This allows residual variance on indicator X3 at T2
ind04_t2 ~~ res4*ind04_t2  # This allows residual variance on indicator X4 at T2
ind05_t2 ~~ res5*ind05_t2  # This allows residual variance on indicator X5 at T2
ind06_t2 ~~ res6*ind06_t2  # This allows residual variance on indicator X6 at T2 
ind07_t2 ~~ res7*ind07_t2  # This allows residual variance on indicator X7 at T2 
ind08_t2 ~~ res8*ind08_t2  # This allows residual variance on indicator X8 at T2
ind09_t2 ~~ res9*ind09_t2  # This allows residual variance on indicator X9 at T2
ind10_t2 ~~ res10*ind10_t2 # This allows residual variance on indicator X10 at T2
ind11_t2 ~~ res11*ind11_t2 # This allows residual variance on indicator X11 at T2
ind12_t2 ~~ res12*ind12_t2 # This allows residual variance on indicator X12 at T2

ind01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind03_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind04_t1 ~ m4*1     # This estimates the intercept of X4 at T1
ind05_t1 ~ m5*1     # This estimates the intercept of X5 at T1
ind06_t1 ~ m6*1     # This estimates the intercept of X6 at T1
ind07_t1 ~ m7*1     # This estimates the intercept of X7 at T1
ind08_t1 ~ m8*1     # This estimates the intercept of X8 at T1
ind09_t1 ~ m9*1     # This estimates the intercept of X9 at T1
ind10_t1 ~ m10*1    # This estimates the intercept of X10 at T1
ind11_t1 ~ m11*1    # This estimates the intercept of X11 at T1
ind12_t1 ~ m12*1    # This estimates the intercept of X12 at T1

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind04_t2 ~ m4*1     # This estimates the intercept of X4 at T2
ind05_t2 ~ m5*1     # This estimates the intercept of X5 at T2
ind06_t2 ~ m6*1     # This estimates the intercept of X6 at T2
ind07_t2 ~ m7*1     # This estimates the intercept of X7 at T2
ind08_t2 ~ m8*1     # This estimates the intercept of X8 at T2
ind09_t2 ~ m9*1     # This estimates the intercept of X9 at T2
ind10_t2 ~ m10*1    # This estimates the intercept of X10 at T2
ind11_t2 ~ m11*1    # This estimates the intercept of X11 at T2
ind12_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sb04_01_t2 ~~ sb04_01_t2
sb04_02_t2 ~~ sb04_02_t2
sb04_03_t2 ~~ sb04_03_t2

sb04_01_t2 ~ 1
sb04_02_t2 ~ 1
sb04_03_t2 ~ 1
'

# loop across 5 traits
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[5]], item_nrs)
  template_filled <- str_replace_all(trait_template_mod_frequ, 
                                       c("trait" = short_name,
                                         "ind01" = items[1], "ind02" = items[2], "ind03" = items[3], "ind04" = items[4],
                                         "ind05" = items[5], "ind06" = items[6], "ind07" = items[7], "ind08" = items[8],
                                         "ind09" = items[9], "ind10" = items[10], "ind11" = items[11], "ind12" = items[12]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), trait_model_fit))
}  
3.8.1.1 Extraversion: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 24248.88 24482.71 0.839 0.071 0.083
# parameters of interest
params_lcs_extra_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_extra_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ goals", "goals ~~ goals", "extra_t1 ~ goals", # change goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 0.998 NA NA
d_extra_1 =~ extra_t2 1.000 0.577 NA NA
d_extra_1 ~1 0.568 1.069 3.176 0.001
extra_t1 ~1 2.793 3.045 41.889 0.000
d_extra_1 ~~ d_extra_1 0.257 0.910 5.057 0.000
extra_t1 ~ goals -0.830 -0.627 -6.241 0.000
d_extra_1 ~ extra_t1 -0.121 -0.209 -1.944 0.052
d_extra_1 ~ goals 0.093 0.122 0.881 0.378
goals ~~ goals 0.480 1.000 3.715 0.000

The moderation effect of specific, facet-level change goals with the extraversion change score (current-self) is not significantly different from zero, b = 0.093, p = 0.378.

3.8.1.2 Extraversion: frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 23987.28 24221.11 0.86 0.067 0.081
# parameters of interest
params_lcs_extra_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_extra_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ frequ", "frequ ~~ frequ", "extra_t1 ~ frequ", # frequency of skill building
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 0.997 NA NA
d_extra_1 =~ extra_t2 1.000 0.576 NA NA
d_extra_1 ~1 0.731 1.383 4.946 0.000
extra_t1 ~1 2.794 3.056 41.906 0.000
d_extra_1 ~~ d_extra_1 0.251 0.898 5.169 0.000
extra_t1 ~ frequ 0.237 0.183 2.006 0.045
d_extra_1 ~ extra_t1 -0.180 -0.311 -3.776 0.000
d_extra_1 ~ frequ 0.112 0.150 1.567 0.117
frequ ~~ frequ 0.498 1.000 5.923 0.000

The moderation effect of the frequency of skill-building behaviors with the extraversion change score (current-self) is not significantly different from zero, b = 0.112, p = 0.117.

3.8.1.3 Agreeableness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 23317.81 23551.64 0.847 0.065 0.069
# parameters of interest
params_lcs_agree_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_agree_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ goals", "goals ~~ goals", "agree_t1 ~ goals", # change goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.040 NA NA
d_agree_1 =~ agree_t2 1.000 0.581 NA NA
d_agree_1 ~1 0.798 2.796 4.396 0.000
agree_t1 ~1 4.175 8.167 89.287 0.000
d_agree_1 ~~ d_agree_1 0.071 0.868 4.228 0.000
agree_t1 ~ goals -0.211 -0.374 -3.924 0.000
d_agree_1 ~ agree_t1 -0.170 -0.304 -3.995 0.000
d_agree_1 ~ goals 0.036 0.116 1.173 0.241
goals ~~ goals 0.822 1.000 4.941 0.000

The moderation effect of specific, facet-level change goals with the agreeableness change score (current-self) is not significantly different from zero, b = 0.036, p = 0.241.

3.8.1.4 Agreeableness: frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 22919.8 23153.63 0.868 0.06 0.068
# parameters of interest
params_lcs_agree_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_agree_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ frequ", "frequ ~~ frequ", "agree_t1 ~ frequ", # frequency of skill building
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.040 NA NA
d_agree_1 =~ agree_t2 1.000 0.581 NA NA
d_agree_1 ~1 0.997 3.482 5.227 0.000
agree_t1 ~1 4.174 8.147 89.281 0.000
d_agree_1 ~~ d_agree_1 0.066 0.811 4.234 0.000
agree_t1 ~ frequ 0.111 0.157 2.002 0.045
d_agree_1 ~ agree_t1 -0.217 -0.388 -4.953 0.000
d_agree_1 ~ frequ 0.105 0.265 2.990 0.003
frequ ~~ frequ 0.525 1.000 6.186 0.000

The frequency of skill-building behaviors significantly moderates changes in agreeableness (current-self), b = 0.105, p = 0.003.

3.8.1.5 Conscientiousness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 23285.82 23519.65 0.849 0.078 0.074
# parameters of interest
params_lcs_consc_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_consc_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ goals", "goals ~~ goals", "consc_t1 ~ goals", # change goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.040 NA NA
d_consc_1 =~ consc_t2 1.000 0.465 NA NA
d_consc_1 ~1 0.121 0.253 0.875 0.382
consc_t1 ~1 2.838 2.646 38.146 0.000
d_consc_1 ~~ d_consc_1 0.207 0.900 5.554 0.000
consc_t1 ~ goals 0.549 0.633 10.263 0.000
d_consc_1 ~ consc_t1 -0.112 -0.250 -2.240 0.025
d_consc_1 ~ goals -0.036 -0.093 -0.832 0.406
goals ~~ goals 1.526 1.000 9.403 0.000

The moderation effect of specific, facet-level change goals with the conscientiousness change score (current-self) is not significantly different from zero, b = -0.036, p = 0.406.

3.8.1.6 Conscientiousness: frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 23021.77 23255.6 0.876 0.068 0.072
# parameters of interest
params_lcs_consc_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_consc_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ frequ", "frequ ~~ frequ", "consc_t1 ~ frequ", # frequency of skill building
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.041 NA NA
d_consc_1 =~ consc_t2 1.000 0.467 NA NA
d_consc_1 ~1 0.239 0.502 2.588 0.010
consc_t1 ~1 2.837 2.678 38.140 0.000
d_consc_1 ~~ d_consc_1 0.194 0.856 5.503 0.000
consc_t1 ~ frequ -0.194 -0.131 -1.757 0.079
d_consc_1 ~ consc_t1 -0.152 -0.339 -4.395 0.000
d_consc_1 ~ frequ -0.146 -0.219 -2.648 0.008
frequ ~~ frequ 0.509 1.000 6.052 0.000

The frequency of skill-building behaviors significantly moderates changes in conscientiousness (current-self), b = -0.146, p = 0.008, although in an unexpected direction such that more frequent skill-building behaviors are associated with more pronounced decreases in conscientiousness.

3.8.1.7 Neuroticism: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 24040.88 24274.71 0.876 0.073 0.063
# parameters of interest
params_lcs_neuro_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_neuro_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ goals", "goals ~~ goals", "neuro_t1 ~ goals", # change goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.004 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.586 NA NA
d_neuro_1 ~1 0.908 1.779 4.779 0.000
neuro_t1 ~1 2.785 3.184 42.903 0.000
d_neuro_1 ~~ d_neuro_1 0.233 0.897 6.069 0.000
neuro_t1 ~ goals -0.537 -0.706 -10.005 0.000
d_neuro_1 ~ neuro_t1 -0.242 -0.415 -3.685 0.000
d_neuro_1 ~ goals -0.073 -0.165 -1.291 0.197
goals ~~ goals 1.323 1.000 7.819 0.000

The moderation effect of specific, facet-level change goals with the neuroticism change score (current-self) is not significantly different from zero, b = -0.073, p = 0.197.

3.8.1.8 Neuroticism: frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 23728.75 23962.58 0.878 0.071 0.065
# parameters of interest
params_lcs_neuro_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_neuro_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ frequ", "frequ ~~ frequ", "neuro_t1 ~ frequ", # frequency of skill building
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.008 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.588 NA NA
d_neuro_1 ~1 0.722 1.403 6.243 0.000
neuro_t1 ~1 2.784 3.153 42.891 0.000
d_neuro_1 ~~ d_neuro_1 0.238 0.900 5.919 0.000
neuro_t1 ~ frequ -0.074 -0.060 -0.759 0.448
d_neuro_1 ~ neuro_t1 -0.175 -0.300 -4.640 0.000
d_neuro_1 ~ frequ 0.062 0.086 1.067 0.286
frequ ~~ frequ 0.515 1.000 5.931 0.000

The moderation effect of the frequency of skill-building behaviors with the neuroticism change score (current-self) is not significantly different from zero, b = 0.062, p = 0.286.

3.8.1.9 Openness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 23936.83 24170.66 0.828 0.073 0.085
# parameters of interest
params_lcs_openn_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_openn_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ goals", "goals ~~ goals", "openn_t1 ~ goals", # change goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.934 NA NA
d_openn_1 =~ openn_t2 1.000 0.470 NA NA
d_openn_1 ~1 0.067 2.040 0.472 0.637
openn_t1 ~1 2.997 45.934 49.382 0.000
d_openn_1 ~~ d_openn_1 0.001 0.922 5.647 0.000
openn_t1 ~ goals -0.026 -0.251 -2.934 0.003
d_openn_1 ~ openn_t1 -0.020 -0.040 -0.423 0.672
d_openn_1 ~ goals 0.014 0.267 2.723 0.006
goals ~~ goals 0.405 1.000 4.219 0.000

Trait-specific (facet) change goals significantly moderate changes in openness (current-self), b = 0.014, p = 0.006.

3.8.1.10 Openness: frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 62 23695.01 23928.84 0.827 0.072 0.081
# parameters of interest
params_lcs_openn_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_openn_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ frequ", "frequ ~~ frequ", "openn_t1 ~ frequ", # frequency of skill building
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.935 NA NA
d_openn_1 =~ openn_t2 1.000 0.469 NA NA
d_openn_1 ~1 0.258 7.985 1.860 0.063
openn_t1 ~1 2.997 46.598 49.395 0.000
d_openn_1 ~~ d_openn_1 0.001 0.940 5.938 0.000
openn_t1 ~ frequ 0.024 0.263 3.320 0.001
d_openn_1 ~ openn_t1 -0.084 -0.167 -1.814 0.070
d_openn_1 ~ frequ 0.010 0.227 2.068 0.039
frequ ~~ frequ 0.493 1.000 5.991 0.000

The frequency of skill-building behaviors significantly moderates changes in openness (current-self), b = 0.01, p = 0.039.

3.8.2 Big Five facets

Run models for all facets with a template & loop:

Show the code
# create templates:

# 1st, for facet-specific change goal

facet_template_mod_goal <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1         # This estimates the variance of facet_t1 
facet_t1 ~ ind_goal               # This estimates the moderation effect on personality at T1
d_facet_1 ~ facet_t1 + ind_goal   # This estimates the self-feedback parameter and the moderation effect on the change score

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[5]], item_nrs)
  mod_name = paste0("sb07_", str_pad(i-5, 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(facet_template_mod_goal, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                         "ind_goal" = mod_name))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), facet_model_fit))
}  

# 2nd, for frequency of skill-building behavior

facet_template_mod_frequ <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

frequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderator

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1         # This estimates the variance of facet_t1 
facet_t1 ~ frequ               # This estimates the moderation effect on personality at T1
d_facet_1 ~ facet_t1 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

sb04_01_t2 ~~ sb04_01_t2
sb04_02_t2 ~~ sb04_02_t2
sb04_03_t2 ~~ sb04_03_t2

sb04_01_t2 ~ 1
sb04_02_t2 ~ 1
sb04_03_t2 ~ 1
'

# loop across 15 facets
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[5]], item_nrs)
  template_filled <- str_replace_all(facet_template_mod_frequ, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4]))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), facet_model_fit))
}  
3.8.2.1 Sociability - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 7848.249 7934.992 0.961 0.07 0.048
# parameters of interest
params_lcs_socia_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_socia_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~ sb07_01_t1", "sb07_01_t1 ~~ sb07_01_t1", "d_socia_1 ~ sb07_01_t1", # change goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.013 NA NA
d_socia_1 =~ socia_t2 1.000 0.624 NA NA
d_socia_1 ~1 0.805 1.530 3.220 0.001
socia_t1 ~1 4.032 4.720 21.920 0.000
d_socia_1 ~~ d_socia_1 0.247 0.892 4.974 0.000
d_socia_1 ~ socia_t1 -0.206 -0.335 -3.684 0.000
d_socia_1 ~ sb07_01_t1 -0.006 -0.013 -0.163 0.871
sb07_01_t1 ~~ sb07_01_t1 1.475 1.000 14.217 0.000

The moderation effect of the facet-specific change goal with the sociability change score (current-self) is not significantly different from zero, b = -0.006, p = 0.871.

3.8.2.2 Sociability - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9554.785 9667.928 0.96 0.062 0.051
# parameters of interest
params_lcs_socia_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_socia_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~ frequ", "frequ ~~ frequ", "socia_t1 ~ frequ", # frequency of skill building
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.014 NA NA
d_socia_1 =~ socia_t2 1.000 0.620 NA NA
d_socia_1 ~1 0.781 1.502 5.166 0.000
socia_t1 ~1 2.808 3.307 41.172 0.000
d_socia_1 ~~ d_socia_1 0.240 0.888 4.914 0.000
socia_t1 ~ frequ 0.150 0.126 1.492 0.136
d_socia_1 ~ socia_t1 -0.206 -0.337 -4.151 0.000
d_socia_1 ~ frequ 0.051 0.071 0.776 0.438
frequ ~~ frequ 0.511 1.000 6.091 0.000

The moderation effect of the frequency of skill-building behaviors with sociability change score (ideal-self) is not significantly different from zero, b = 0.051, p = 0.438.

3.8.2.3 Assertiveness - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 8217.959 8304.703 0.974 0.047 0.046
# parameters of interest
params_lcs_asser_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_asser_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~ sb07_02_t1", "sb07_02_t1 ~~ sb07_02_t1", "d_asser_1 ~ sb07_02_t1", # change goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 0.973 NA NA
d_asser_1 =~ asser_t2 1.000 0.363 NA NA
d_asser_1 ~1 -0.003 -0.012 -0.011 0.992
asser_t1 ~1 3.609 5.964 23.556 0.000
d_asser_1 ~~ d_asser_1 0.049 0.954 1.855 0.064
d_asser_1 ~ asser_t1 -0.019 -0.050 -0.280 0.779
d_asser_1 ~ sb07_02_t1 0.036 0.192 1.242 0.214
sb07_02_t1 ~~ sb07_02_t1 1.427 1.000 15.087 0.000

The moderation effect of the facet-specific change goal with the assertiveness change score (current-self) is not significantly different from zero, b = 0.036, p = 0.214.

3.8.2.4 Assertiveness - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9887.285 10000.43 0.974 0.042 0.047
# parameters of interest
params_lcs_asser_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_asser_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~ frequ", "frequ ~~ frequ", "asser_t1 ~ frequ", # frequency of skill building
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 0.972 NA NA
d_asser_1 =~ asser_t2 1.000 0.363 NA NA
d_asser_1 ~1 0.220 1.019 1.232 0.218
asser_t1 ~1 3.046 5.260 54.990 0.000
d_asser_1 ~~ d_asser_1 0.044 0.943 1.912 0.056
asser_t1 ~ frequ 0.115 0.142 1.576 0.115
d_asser_1 ~ asser_t1 -0.052 -0.139 -0.886 0.376
d_asser_1 ~ frequ 0.065 0.215 1.355 0.175
frequ ~~ frequ 0.512 1.000 6.087 0.000

The moderation effect of the frequency of skill-building behaviors with the assertiveness change score (ideal-self) is not significantly different from zero, b = 0.065, p = 0.175.

3.8.2.5 Energy - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 8187.773 8274.516 0.945 0.072 0.05
# parameters of interest
params_lcs_energ_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_energ_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~ sb07_03_t1", "sb07_03_t1 ~~ sb07_03_t1", "d_energ_1 ~ sb07_03_t1", # change goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 0.992 NA NA
d_energ_1 =~ energ_t2 1.000 0.556 NA NA
d_energ_1 ~1 0.307 1.428 2.175 0.030
energ_t1 ~1 2.192 5.712 21.044 0.000
d_energ_1 ~~ d_energ_1 0.043 0.930 2.363 0.018
d_energ_1 ~ energ_t1 -0.145 -0.260 -2.381 0.017
d_energ_1 ~ sb07_03_t1 -0.002 -0.013 -0.143 0.886
sb07_03_t1 ~~ sb07_03_t1 1.595 1.000 14.188 0.000

The moderation effect of the facet-specific change goal with the energy change score (current-self) is not significantly different from zero, b = -0.002, p = 0.886.

3.8.2.6 Energy - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9842.248 9955.392 0.954 0.059 0.055
# parameters of interest
params_lcs_energ_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_energ_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~ frequ", "frequ ~~ frequ", "energ_t1 ~ frequ", # frequency of skill building
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 0.988 NA NA
d_energ_1 =~ energ_t2 1.000 0.553 NA NA
d_energ_1 ~1 0.347 1.502 2.380 0.017
energ_t1 ~1 2.686 6.509 49.366 0.000
d_energ_1 ~~ d_energ_1 0.048 0.901 2.634 0.008
energ_t1 ~ frequ -0.118 -0.200 -1.954 0.051
d_energ_1 ~ energ_t1 -0.165 -0.296 -3.026 0.002
d_energ_1 ~ frequ -0.060 -0.183 -1.495 0.135
frequ ~~ frequ 0.492 1.000 5.766 0.000

The moderation effect of the frequency of skill-building behaviors with the energy change score (ideal-self) is not significantly different from zero, b = -0.06, p = 0.135.

3.8.2.7 Compassion - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 8043.026 8129.769 0.988 0.027 0.038
# parameters of interest
params_lcs_compa_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_compa_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~ sb07_04_t1", "sb07_04_t1 ~~ sb07_04_t1", "d_compa_1 ~ sb07_04_t1", # change goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.153 NA NA
d_compa_1 =~ compa_t2 1.000 0.383 NA NA
d_compa_1 ~1 0.760 3.325 2.433 0.015
compa_t1 ~1 4.527 6.576 47.283 0.000
d_compa_1 ~~ d_compa_1 0.037 0.699 1.122 0.262
d_compa_1 ~ compa_t1 -0.170 -0.511 -2.584 0.010
d_compa_1 ~ sb07_04_t1 0.017 0.105 0.683 0.495
sb07_04_t1 ~~ sb07_04_t1 1.948 1.000 19.114 0.000

The moderation effect of the facet-specific change goal with the compassion change score (current-self) is not significantly different from zero, b = 0.017, p = 0.495.

3.8.2.8 Compassion - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9601.091 9714.234 0.986 0.028 0.046
# parameters of interest
params_lcs_compa_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_compa_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~ frequ", "frequ ~~ frequ", "compa_t1 ~ frequ", # frequency of skill building
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.152 NA NA
d_compa_1 =~ compa_t2 1.000 0.381 NA NA
d_compa_1 ~1 0.944 4.217 3.538 0.000
compa_t1 ~1 4.171 6.168 85.810 0.000
d_compa_1 ~~ d_compa_1 0.027 0.537 0.895 0.371
compa_t1 ~ frequ 0.165 0.178 2.315 0.021
d_compa_1 ~ compa_t1 -0.203 -0.614 -3.306 0.001
d_compa_1 ~ frequ 0.129 0.423 2.676 0.007
frequ ~~ frequ 0.535 1.000 6.258 0.000

The frequency of skill-building behaviors significantly moderates changes in compassion (current-self), b = 0.129, p = 0.007.

3.8.2.9 Respectfulness - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 7290.469 7377.212 0.949 0.068 0.054
# parameters of interest
params_lcs_respe_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_respe_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~ sb07_05_t1", "sb07_05_t1 ~~ sb07_05_t1", "d_respe_1 ~ sb07_05_t1", # change goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.099 NA NA
d_respe_1 =~ respe_t2 1.000 0.616 NA NA
d_respe_1 ~1 0.889 2.677 2.787 0.005
respe_t1 ~1 4.823 8.144 71.574 0.000
d_respe_1 ~~ d_respe_1 0.088 0.794 4.126 0.000
d_respe_1 ~ respe_t1 -0.207 -0.369 -3.203 0.001
d_respe_1 ~ sb07_05_t1 0.037 0.151 1.474 0.141
sb07_05_t1 ~~ sb07_05_t1 1.796 1.000 15.987 0.000

The moderation effect of the facet-specific change goal with the respectfulness change score (current-self) is not significantly different from zero, b = 0.037, p = 0.141.

3.8.2.10 Respectfulness - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 8910.94 9024.084 0.954 0.058 0.053
# parameters of interest
params_lcs_respe_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_respe_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~ frequ", "frequ ~~ frequ", "respe_t1 ~ frequ", # frequency of skill building
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.098 NA NA
d_respe_1 =~ respe_t2 1.000 0.618 NA NA
d_respe_1 ~1 1.200 3.667 4.501 0.000
respe_t1 ~1 4.396 7.558 104.960 0.000
d_respe_1 ~~ d_respe_1 0.083 0.776 4.129 0.000
respe_t1 ~ frequ 0.109 0.135 1.697 0.090
d_respe_1 ~ respe_t1 -0.258 -0.459 -4.458 0.000
d_respe_1 ~ frequ 0.088 0.193 2.117 0.034
frequ ~~ frequ 0.521 1.000 6.145 0.000

The frequency of skill-building behaviors significantly moderates changes in respectfulness (current-self), b = 0.088, p = 0.034.

3.8.2.11 Trust - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 8383.187 8469.93 0.94 0.067 0.053
# parameters of interest
params_lcs_trust_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_trust_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~ sb07_06_t1", "sb07_06_t1 ~~ sb07_06_t1", "d_trust_1 ~ sb07_06_t1", # change goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.029 NA NA
d_trust_1 =~ trust_t2 1.000 0.608 NA NA
d_trust_1 ~1 0.500 1.384 2.422 0.015
trust_t1 ~1 2.756 4.505 25.690 0.000
d_trust_1 ~~ d_trust_1 0.115 0.876 2.629 0.009
d_trust_1 ~ trust_t1 -0.197 -0.333 -2.801 0.005
d_trust_1 ~ sb07_06_t1 -0.023 -0.084 -0.890 0.373
sb07_06_t1 ~~ sb07_06_t1 1.823 1.000 19.810 0.000

The moderation effect of the facet-specific change goal with the trust change score (current-self) is not significantly different from zero, b = -0.023, p = 0.373.

3.8.2.12 Trust - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9955.762 10068.91 0.96 0.051 0.047
# parameters of interest
params_lcs_trust_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_trust_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~ frequ", "frequ ~~ frequ", "trust_t1 ~ frequ", # frequency of skill building
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.030 NA NA
d_trust_1 =~ trust_t2 1.000 0.603 NA NA
d_trust_1 ~1 0.486 1.362 2.440 0.015
trust_t1 ~1 2.889 4.742 46.802 0.000
d_trust_1 ~~ d_trust_1 0.105 0.828 2.618 0.009
trust_t1 ~ frequ -0.082 -0.097 -1.195 0.232
d_trust_1 ~ trust_t1 -0.214 -0.365 -3.018 0.003
d_trust_1 ~ frequ -0.116 -0.236 -2.093 0.036
frequ ~~ frequ 0.524 1.000 6.181 0.000

The frequency of skill-building behaviors significantly moderates changes in trust (current-self), b = -0.116, p = 0.036.

3.8.2.13 Organization - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 7889.162 7975.905 0.95 0.087 0.044
# parameters of interest
params_lcs_organ_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_organ_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~ sb07_07_t1", "sb07_07_t1 ~~ sb07_07_t1", "d_organ_1 ~ sb07_07_t1", # change goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.079 NA NA
d_organ_1 =~ organ_t2 1.000 0.527 NA NA
d_organ_1 ~1 0.406 0.754 3.826 0.000
organ_t1 ~1 1.329 1.208 8.589 0.000
d_organ_1 ~~ d_organ_1 0.245 0.846 4.350 0.000
d_organ_1 ~ organ_t1 -0.168 -0.344 -3.060 0.002
d_organ_1 ~ sb07_07_t1 -0.027 -0.074 -0.689 0.491
sb07_07_t1 ~~ sb07_07_t1 2.202 1.000 19.574 0.000

The moderation effect of the facet-specific change goal with the organization change score (current-self) is not significantly different from zero, b = -0.027, p = 0.491.

3.8.2.14 Organization - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9507.707 9620.851 0.989 0.033 0.033
# parameters of interest
params_lcs_organ_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_organ_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~ frequ", "frequ ~~ frequ", "organ_t1 ~ frequ", # frequency of skill building
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.078 NA NA
d_organ_1 =~ organ_t2 1.000 0.529 NA NA
d_organ_1 ~1 0.429 0.825 3.865 0.000
organ_t1 ~1 2.815 2.657 37.644 0.000
d_organ_1 ~~ d_organ_1 0.222 0.819 4.481 0.000
organ_t1 ~ frequ -0.264 -0.180 -2.447 0.014
d_organ_1 ~ organ_t1 -0.206 -0.419 -4.928 0.000
d_organ_1 ~ frequ -0.130 -0.180 -2.023 0.043
frequ ~~ frequ 0.520 1.000 6.149 0.000

The frequency of skill-building behaviors significantly moderates changes in organization (current-self), b = -0.13, p = 0.043.

3.8.2.15 Productiveness - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 7806.725 7893.468 0.974 0.055 0.036
# parameters of interest
params_lcs_produ_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_produ_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~ sb07_08_t1", "sb07_08_t1 ~~ sb07_08_t1", "d_produ_1 ~ sb07_08_t1", # change goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.038 NA NA
d_produ_1 =~ produ_t2 1.000 0.487 NA NA
d_produ_1 ~1 0.342 0.923 2.162 0.031
produ_t1 ~1 2.143 2.712 11.744 0.000
d_produ_1 ~~ d_produ_1 0.123 0.893 3.823 0.000
d_produ_1 ~ produ_t1 -0.117 -0.250 -1.945 0.052
d_produ_1 ~ sb07_08_t1 -0.033 -0.118 -1.140 0.254
sb07_08_t1 ~~ sb07_08_t1 1.715 1.000 13.061 0.000

The moderation effect of the facet-specific change goal with the productiveness change score (current-self) is not significantly different from zero, b = -0.033, p = 0.254.

3.8.2.16 Productiveness - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9467.201 9580.344 0.972 0.05 0.044
# parameters of interest
params_lcs_produ_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_produ_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~ frequ", "frequ ~~ frequ", "produ_t1 ~ frequ", # frequency of skill building
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.039 NA NA
d_produ_1 =~ produ_t2 1.000 0.494 NA NA
d_produ_1 ~1 0.366 0.996 2.209 0.027
produ_t1 ~1 3.338 4.329 50.287 0.000
d_produ_1 ~~ d_produ_1 0.113 0.836 3.859 0.000
produ_t1 ~ frequ -0.104 -0.095 -1.136 0.256
d_produ_1 ~ produ_t1 -0.161 -0.339 -3.200 0.001
d_produ_1 ~ frequ -0.133 -0.256 -2.659 0.008
frequ ~~ frequ 0.503 1.000 6.008 0.000

The frequency of skill-building behaviors significantly moderates changes in productiveness (current-self), b = -0.133, p = 0.008.

3.8.2.17 Responsibility - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 7962.596 8049.339 0.922 0.085 0.081
# parameters of interest
params_lcs_respo_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_respo_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~ sb07_09_t1", "sb07_09_t1 ~~ sb07_09_t1", "d_respo_1 ~ sb07_09_t1", # change goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 0.994 NA NA
d_respo_1 =~ respo_t2 1.000 0.439 NA NA
d_respo_1 ~1 0.354 1.732 1.432 0.152
respo_t1 ~1 4.045 8.743 45.866 0.000
d_respo_1 ~~ d_respo_1 0.040 0.957 2.245 0.025
d_respo_1 ~ respo_t1 -0.087 -0.197 -1.479 0.139
d_respo_1 ~ sb07_09_t1 0.003 0.022 0.185 0.854
sb07_09_t1 ~~ sb07_09_t1 2.241 1.000 23.046 0.000

The moderation effect of the facet-specific change goal with the responsibility change score (current-self) is not significantly different from zero, b = 0.003, p = 0.854.

3.8.2.18 Responsibility - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9526.025 9639.169 0.942 0.065 0.07
# parameters of interest
params_lcs_respo_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_respo_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~ frequ", "frequ ~~ frequ", "respo_t1 ~ frequ", # frequency of skill building
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 0.994 NA NA
d_respo_1 =~ respo_t2 1.000 0.438 NA NA
d_respo_1 ~1 0.375 1.818 2.013 0.044
respo_t1 ~1 3.632 7.754 69.872 0.000
d_respo_1 ~~ d_respo_1 0.040 0.949 2.221 0.026
respo_t1 ~ frequ -0.013 -0.021 -0.260 0.795
d_respo_1 ~ respo_t1 -0.090 -0.204 -1.801 0.072
d_respo_1 ~ frequ 0.027 0.093 0.780 0.435
frequ ~~ frequ 0.519 1.000 6.109 0.000

The moderation effect of the frequency of skill-building behaviors with the responsibility change score (ideal-self) is not significantly different from zero, b = 0.027, p = 0.435.

3.8.2.19 Anxiety - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 8269.182 8355.925 0.972 0.052 0.046
# parameters of interest
params_lcs_anxie_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_anxie_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~ sb07_10_t1", "sb07_10_t1 ~~ sb07_10_t1", "d_anxie_1 ~ sb07_10_t1", # change goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.072 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.651 NA NA
d_anxie_1 ~1 1.258 2.272 3.592 0.000
anxie_t1 ~1 4.080 4.476 28.581 0.000
d_anxie_1 ~~ d_anxie_1 0.251 0.818 3.758 0.000
d_anxie_1 ~ anxie_t1 -0.304 -0.500 -3.751 0.000
d_anxie_1 ~ sb07_10_t1 -0.053 -0.148 -1.300 0.194
sb07_10_t1 ~~ sb07_10_t1 2.343 1.000 19.084 0.000

The moderation effect of the facet-specific change goal with the anxiety change score (current-self) is not significantly different from zero, b = -0.053, p = 0.194.

3.8.2.20 Anxiety - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9878.473 9991.616 0.959 0.055 0.052
# parameters of interest
params_lcs_anxie_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_anxie_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~ frequ", "frequ ~~ frequ", "anxie_t1 ~ frequ", # frequency of skill building
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.072 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.654 NA NA
d_anxie_1 ~1 0.895 1.611 4.926 0.000
anxie_t1 ~1 2.789 3.060 40.621 0.000
d_anxie_1 ~~ d_anxie_1 0.254 0.823 3.451 0.001
anxie_t1 ~ frequ -0.213 -0.170 -1.982 0.047
d_anxie_1 ~ anxie_t1 -0.241 -0.396 -3.819 0.000
d_anxie_1 ~ frequ 0.069 0.091 0.905 0.365
frequ ~~ frequ 0.529 1.000 6.048 0.000

The moderation effect of the frequency of skill-building behaviors with the anxiety change score (ideal-self) is not significantly different from zero, b = 0.069, p = 0.365.

3.8.2.21 Depression - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 8049.975 8136.718 0.962 0.078 0.054
# parameters of interest
params_lcs_depre_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_depre_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~ sb07_11_t1", "sb07_11_t1 ~~ sb07_11_t1", "d_depre_1 ~ sb07_11_t1", # change goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 0.956 NA NA
d_depre_1 =~ depre_t2 1.000 0.538 NA NA
d_depre_1 ~1 0.689 1.887 2.293 0.022
depre_t1 ~1 3.907 6.023 38.047 0.000
d_depre_1 ~~ d_depre_1 0.127 0.955 4.491 0.000
d_depre_1 ~ depre_t1 -0.153 -0.273 -2.110 0.035
d_depre_1 ~ sb07_11_t1 -0.024 -0.105 -0.814 0.416
sb07_11_t1 ~~ sb07_11_t1 2.537 1.000 24.023 0.000

The moderation effect of the facet-specific change goal with the depression change score (current-self) is not significantly different from zero, b = -0.024, p = 0.416.

3.8.2.22 Depression - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9722.153 9835.297 0.949 0.075 0.06
# parameters of interest
params_lcs_depre_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_depre_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~ frequ", "frequ ~~ frequ", "depre_t1 ~ frequ", # frequency of skill building
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 0.955 NA NA
d_depre_1 =~ depre_t2 1.000 0.539 NA NA
d_depre_1 ~1 0.487 1.304 4.045 0.000
depre_t1 ~1 2.952 4.458 46.535 0.000
d_depre_1 ~~ d_depre_1 0.134 0.960 4.431 0.000
depre_t1 ~ frequ -0.008 -0.009 -0.115 0.909
d_depre_1 ~ depre_t1 -0.111 -0.196 -2.761 0.006
d_depre_1 ~ frequ 0.020 0.039 0.438 0.661
frequ ~~ frequ 0.519 1.000 6.000 0.000

The moderation effect of the frequency of skill-building behaviors with the depression change score (ideal-self) is not significantly different from zero, b = 0.02, p = 0.661.

3.8.2.23 Volatility - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 8251.144 8337.887 0.988 0.038 0.032
# parameters of interest
params_lcs_volat_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_volat_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~ sb07_12_t1", "sb07_12_t1 ~~ sb07_12_t1", "d_volat_1 ~ sb07_12_t1", # change goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.071 NA NA
d_volat_1 =~ volat_t2 1.000 0.603 NA NA
d_volat_1 ~1 0.541 1.081 4.162 0.000
volat_t1 ~1 2.599 2.919 18.909 0.000
d_volat_1 ~~ d_volat_1 0.210 0.838 5.208 0.000
d_volat_1 ~ volat_t1 -0.206 -0.367 -4.700 0.000
d_volat_1 ~ sb07_12_t1 -0.030 -0.079 -0.900 0.368
sb07_12_t1 ~~ sb07_12_t1 1.712 1.000 17.447 0.000

The moderation effect of the facet-specific change goal with the volatility change score (current-self) is not significantly different from zero, b = -0.03, p = 0.368.

3.8.2.24 Volatility - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9883.404 9996.547 0.967 0.056 0.044
# parameters of interest
params_lcs_volat_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_volat_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~ frequ", "frequ ~~ frequ", "volat_t1 ~ frequ", # frequency of skill building
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.072 NA NA
d_volat_1 =~ volat_t2 1.000 0.603 NA NA
d_volat_1 ~1 0.509 1.013 3.915 0.000
volat_t1 ~1 3.238 3.621 47.870 0.000
d_volat_1 ~~ d_volat_1 0.211 0.835 5.364 0.000
volat_t1 ~ frequ 0.051 0.041 0.515 0.606
d_volat_1 ~ volat_t1 -0.221 -0.393 -5.643 0.000
d_volat_1 ~ frequ -0.063 -0.090 -0.957 0.339
frequ ~~ frequ 0.512 1.000 5.918 0.000

The moderation effect of the frequency of skill-building behaviors with the volatility change score (ideal-self) is significantly different from zero, b = -0.063, p = 0.339.

3.8.2.25 Curiosity - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 7986.487 8073.23 0.968 0.048 0.047
# parameters of interest
params_lcs_curio_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_curio_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~ sb07_13_t1", "sb07_13_t1 ~~ sb07_13_t1", "d_curio_1 ~ sb07_13_t1", # change goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.032 NA NA
d_curio_1 =~ curio_t2 1.000 0.357 NA NA
d_curio_1 ~1 0.423 2.440 1.424 0.155
curio_t1 ~1 4.312 8.592 44.510 0.000
d_curio_1 ~~ d_curio_1 0.028 0.931 1.256 0.209
d_curio_1 ~ curio_t1 -0.089 -0.259 -1.405 0.160
d_curio_1 ~ sb07_13_t1 0.002 0.014 0.072 0.943
sb07_13_t1 ~~ sb07_13_t1 1.597 1.000 17.756 0.000

The moderation effect of the facet-specific change goal with the curiosity change score (current-self) is not significantly different from zero, b = 0.002, p = 0.943.

3.8.2.26 Curiosity - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9601.399 9714.543 0.964 0.048 0.049
# parameters of interest
params_lcs_curio_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_curio_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~ frequ", "frequ ~~ frequ", "curio_t1 ~ frequ", # frequency of skill building
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.031 NA NA
d_curio_1 =~ curio_t2 1.000 0.354 NA NA
d_curio_1 ~1 0.536 3.073 2.237 0.025
curio_t1 ~1 4.075 8.018 82.826 0.000
d_curio_1 ~~ d_curio_1 0.024 0.784 1.127 0.260
curio_t1 ~ frequ 0.145 0.201 2.445 0.014
d_curio_1 ~ curio_t1 -0.116 -0.338 -2.001 0.045
d_curio_1 ~ frequ 0.097 0.394 1.865 0.062
frequ ~~ frequ 0.498 1.000 5.930 0.000

The moderation effect of the frequency of skill-building behaviors with the curiosity change score (ideal-self) is not significantly different from zero, b = 0.097, p = 0.062.

3.8.2.27 Aesthetic - specific, facet-level change goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 8290.261 8377.004 0.997 0.018 0.039
# parameters of interest
params_lcs_aesth_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_aesth_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~ sb07_14_t1", "sb07_14_t1 ~~ sb07_14_t1", "d_aesth_1 ~ sb07_14_t1", # change goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.976 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.496 NA NA
d_aesth_1 ~1 0.314 10.766 1.923 0.054
aesth_t1 ~1 2.995 52.154 48.854 0.000
d_aesth_1 ~~ d_aesth_1 0.001 0.935 4.139 0.000
d_aesth_1 ~ aesth_t1 -0.107 -0.210 -1.974 0.048
d_aesth_1 ~ sb07_14_t1 0.003 0.153 1.824 0.068
sb07_14_t1 ~~ sb07_14_t1 1.882 1.000 20.462 0.000

The moderation effect of the facet-specific change goal with the aesthetic change score (current-self) is not significantly different from zero, b = 0.003, p = 0.068.

3.8.2.28 Aesthetic - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9851.513 9964.656 0.988 0.031 0.041
# parameters of interest
params_lcs_aesth_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_aesth_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~ frequ", "frequ ~~ frequ", "aesth_t1 ~ frequ", # frequency of skill building
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.976 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.496 NA NA
d_aesth_1 ~1 0.364 14.020 2.118 0.034
aesth_t1 ~1 2.999 58.691 49.431 0.000
d_aesth_1 ~~ d_aesth_1 0.001 0.928 4.169 0.000
aesth_t1 ~ frequ 0.013 0.182 2.142 0.032
d_aesth_1 ~ aesth_t1 -0.121 -0.237 -2.111 0.035
d_aesth_1 ~ frequ 0.006 0.176 1.834 0.067
frequ ~~ frequ 0.504 1.000 6.081 0.000

The moderation effect of the frequency of skill-building behaviors with the aesthetic change score (ideal-self) is not significantly different from zero, b = 0.006, p = 0.067.

3.8.2.29 Imagination - specific, facet-level change goal as moderator of change

Results summary (*sb07_$$_t1* = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 23 7888.524 7975.267 0.958 0.064 0.061
# parameters of interest
params_lcs_imagi_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_imagi_curr_specif_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~ sb07_15_t1", "sb07_15_t1 ~~ sb07_15_t1", "d_imagi_1 ~ sb07_15_t1", # change goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_specif_hyp6, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.990 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.503 NA NA
d_imagi_1 ~1 0.373 0.940 1.484 0.138
imagi_t1 ~1 3.926 5.029 32.497 0.000
d_imagi_1 ~~ d_imagi_1 0.147 0.933 3.432 0.001
d_imagi_1 ~ imagi_t1 -0.107 -0.211 -1.742 0.082
d_imagi_1 ~ sb07_15_t1 0.032 0.113 1.284 0.199
sb07_15_t1 ~~ sb07_15_t1 1.977 1.000 20.646 0.000

The moderation effect of the facet-specific change goal with the imagination change score (current-self) is not significantly different from zero, b = 0.032, p = 0.199.

3.8.2.30 Imagination - frequency of skill-building behaviors as moderator of change

Results summary (frequ = frequency of skill-building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
321 30 9439.617 9552.761 0.974 0.045 0.05
# parameters of interest
params_lcs_imagi_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_imagi_curr_frequ_hyp6, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~ frequ", "frequ ~~ frequ", "imagi_t1 ~ frequ", # frequency of skill building
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_frequ_hyp6, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.991 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.504 NA NA
d_imagi_1 ~1 0.589 1.480 2.495 0.013
imagi_t1 ~1 3.555 4.543 64.355 0.000
d_imagi_1 ~~ d_imagi_1 0.146 0.924 3.480 0.001
imagi_t1 ~ frequ 0.287 0.259 3.162 0.002
d_imagi_1 ~ imagi_t1 -0.140 -0.275 -2.198 0.028
d_imagi_1 ~ frequ 0.083 0.147 1.288 0.198
frequ ~~ frequ 0.499 1.000 5.996 0.000

The moderation effect of the frequency of skill-building behaviors with the imagination change score (ideal-self) is not significantly different from zero, b = 0.083, p = 0.198.

3.8.3 Hyp 6: Effects summary

Run models for all facets with a template & loop:

Show the code
# create df for table:

df_table_hyp6 <- bind_rows(
  #traits
  params_lcs_extra_curr_specif_hyp6 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_curr_frequ_hyp6 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_curr_specif_hyp6 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_curr_frequ_hyp6 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_curr_specif_hyp6 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_curr_frequ_hyp6 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_curr_specif_hyp6 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_curr_frequ_hyp6 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_curr_specif_hyp6 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_curr_frequ_hyp6 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_curr_specif_hyp6 %>% filter(term=="d_socia_1 ~ sb07_01_t1"),
  params_lcs_socia_curr_frequ_hyp6 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_curr_specif_hyp6 %>% filter(term=="d_asser_1 ~ sb07_02_t1"),
  params_lcs_asser_curr_frequ_hyp6 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_curr_specif_hyp6 %>% filter(term=="d_energ_1 ~ sb07_03_t1"),
  params_lcs_energ_curr_frequ_hyp6 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_curr_specif_hyp6 %>% filter(term=="d_compa_1 ~ sb07_04_t1"),
  params_lcs_compa_curr_frequ_hyp6 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_curr_specif_hyp6 %>% filter(term=="d_respe_1 ~ sb07_05_t1"),
  params_lcs_respe_curr_frequ_hyp6 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_curr_specif_hyp6 %>% filter(term=="d_trust_1 ~ sb07_06_t1"),
  params_lcs_trust_curr_frequ_hyp6 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_curr_specif_hyp6 %>% filter(term=="d_organ_1 ~ sb07_07_t1"),
  params_lcs_organ_curr_frequ_hyp6 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_curr_specif_hyp6 %>% filter(term=="d_produ_1 ~ sb07_08_t1"),
  params_lcs_produ_curr_frequ_hyp6 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_curr_specif_hyp6 %>% filter(term=="d_respo_1 ~ sb07_09_t1"),
  params_lcs_respo_curr_frequ_hyp6 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_curr_specif_hyp6 %>% filter(term=="d_anxie_1 ~ sb07_10_t1"),
  params_lcs_anxie_curr_frequ_hyp6 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_curr_specif_hyp6 %>% filter(term=="d_depre_1 ~ sb07_11_t1"),
  params_lcs_depre_curr_frequ_hyp6 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_curr_specif_hyp6 %>% filter(term=="d_volat_1 ~ sb07_12_t1"),
  params_lcs_volat_curr_frequ_hyp6 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_curr_specif_hyp6 %>% filter(term=="d_curio_1 ~ sb07_13_t1"),
  params_lcs_curio_curr_frequ_hyp6 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_curr_specif_hyp6 %>% filter(term=="d_aesth_1 ~ sb07_14_t1"),
  params_lcs_aesth_curr_frequ_hyp6 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_curr_specif_hyp6 %>% filter(term=="d_imagi_1 ~ sb07_15_t1"),
  params_lcs_imagi_curr_frequ_hyp6 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, estimate, std.all, statistic, p.value)

Results summary across the Big Five traits: trait-specific change goals (goals) and frequency of skill-building behaviors (frequency) as moderators on the latent change score

kable(df_table_hyp6[1:10, ], digits = 3)
trait moderator estimate std.all statistic p.value
extraversion goals 0.093 0.122 0.881 0.378
extraversion frequency 0.112 0.150 1.567 0.117
agreeableness goals 0.036 0.116 1.173 0.241
agreeableness frequency 0.105 0.265 2.990 0.003
conscientiousness goals -0.036 -0.093 -0.832 0.406
conscientiousness frequency -0.146 -0.219 -2.648 0.008
neuroticism goals -0.073 -0.165 -1.291 0.197
neuroticism frequency 0.062 0.086 1.067 0.286
openness goals 0.014 0.267 2.723 0.006
openness frequency 0.010 0.227 2.068 0.039

Four moderator effects significantly differ from zero:

  • changes in current-level agreeableness are moderated by the frequency of skill-building behaviors
  • changes in current-level conscientiousness are moderated by the frequency of skill-building behaviors (but in the unexpected direction)
  • changes in current-level openness are moderated by the trait-specific change goals
  • changes in current-level openness are moderated by the frequency of skill-building behaviors

Results summary across the Big Five facets: trait-specific change goals (goals) and frequency of skill-building behaviors (frequency) as moderators on the latent change score

kable(df_table_hyp6[11:40, ], digits = 3)
trait moderator estimate std.all statistic p.value
sociability goals -0.006 -0.013 -0.163 0.871
sociability frequency 0.051 0.071 0.776 0.438
assertiveness goals 0.036 0.192 1.242 0.214
assertiveness frequency 0.065 0.215 1.355 0.175
energy goals -0.002 -0.013 -0.143 0.886
energy frequency -0.060 -0.183 -1.495 0.135
compassion goals 0.017 0.105 0.683 0.495
compassion frequency 0.129 0.423 2.676 0.007
respectfulness goals 0.037 0.151 1.474 0.141
respectfulness frequency 0.088 0.193 2.117 0.034
trust goals -0.023 -0.084 -0.890 0.373
trust frequency -0.116 -0.236 -2.093 0.036
organization goals -0.027 -0.074 -0.689 0.491
organization frequency -0.130 -0.180 -2.023 0.043
productiveness goals -0.033 -0.118 -1.140 0.254
productiveness frequency -0.133 -0.256 -2.659 0.008
responsibility goals 0.003 0.022 0.185 0.854
responsibility frequency 0.027 0.093 0.780 0.435
anxiety goals -0.053 -0.148 -1.300 0.194
anxiety frequency 0.069 0.091 0.905 0.365
depression goals -0.024 -0.105 -0.814 0.416
depression frequency 0.020 0.039 0.438 0.661
volatility goals -0.030 -0.079 -0.900 0.368
volatility frequency -0.063 -0.090 -0.957 0.339
curiosity goals 0.002 0.014 0.072 0.943
curiosity frequency 0.097 0.394 1.865 0.062
aesthetic goals 0.003 0.153 1.824 0.068
aesthetic frequency 0.006 0.176 1.834 0.067
imagination goals 0.032 0.113 1.284 0.199
imagination frequency 0.083 0.147 1.288 0.198

Looking at the facets, we find five moderator effects that significantly differ from zero:

  • Within agreeableness, we find the effect for the frequency of skill-building behaviors from above represented in all the three facets, compassion, respectfulness, and trust.
  • The effect for conscientiousness is represented in two of the three facets, organization and productiveness.
  • However, the effect seen above for openness is mirrored in none of the facets.

3.9 Hypothesis 7: Desire to change and frequency of self-acceptance behaviors as moderators of change in personality in self-acceptance group

Desire to change and frequency of self-acceptance behaviors measured at the follow-up assessment will be positively related to change in ideal-self ratings in the self-acceptance group.

To test this hypothesis, we will estimate the mean-level difference in ideal trait ratings between baseline and follow up using a latent change model for each big five domain and facet. We will then include two moderators. The first will indicate how much the individual wanted to accept themselves on a given big five domain or facet. The second will indicate their frequency of self-acceptance behaviors. We will estimate the main effects of each of these variables and the interaction between these variables on the trait change score.

Reshape and split data set by intervention group:

Show the code
df_sbsa_wide_pers_sa_mod <- df_sbsa %>% 
  filter(rando=="Self-Acceptance") %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("bf06", # only need ideal-level
                                  "sa07", # facet-specific acceptance goals
                                  "sa04"))) %>% # frequency self-acceptance behaviors
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with(c("bf06", "sa07", "sa04")))) %>% 
  select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, 
            sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, 
            sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, 
            sa04_01_t1, sa04_02_t1, sa04_03_t1)) # frequency of self-acceptance behaviors measured at T2
colnames(df_sbsa_wide_pers_sa_mod)

3.9.1 Big Five traits

Run models for all traits with a template & loop:

Show the code
# create templates:

# 1st, for facet-specific acceptance goals

trait_template_mod_goal_accept <- '
trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 + lamb4*ind04_t1 + lamb5*ind05_t1 + lamb6*ind06_t1 + lamb7*ind07_t1 + lamb8*ind08_t1 + lamb9*ind09_t1 + lamb10*ind10_t1 + lamb11*ind11_t1 + lamb12*ind12_t1 # This specifies the measurement model for trait_t1 
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 + lamb4*ind04_t2 + lamb5*ind05_t2 + lamb6*ind06_t2 + lamb7*ind07_t2 + lamb8*ind08_t2 + lamb9*ind09_t2 + lamb10*ind10_t2 + lamb11*ind11_t2 + lamb12*ind12_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadings

goals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderator

trait_t2 ~ 1*trait_t1     # This parameter regresses trait_t2 perfectly on trait_t1
d_trait_1 =~ 1*trait_t2   # This defines the latent change score factor as measured perfectly by scores on trait_t2
trait_t2 ~ 0*1            # This line constrains the intercept of trait_t2 to 0
trait_t2 ~~ 0*trait_t2    # This fixes the variance of trait_t2 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t1 ~ 1               # This estimates the intercept of trait_t1 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t1 ~~ trait_t1         # This estimates the variance of trait_t1 
trait_t1 ~ goals               # This estimates the moderation effect on personality at T1
d_trait_1 ~ trait_t1 + goals   # This estimates the self-feedback parameter and the moderation effect on the change score

goals ~ 0*1            # This fixes the intercept of the moderator to 0
goals ~~ goals         # This estimates the variance of the moderator

ind01_t1 ~~ ind01_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind02_t1 ~~ ind02_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind03_t1 ~~ ind03_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind04_t1 ~~ ind04_t2   # This allows residual covariance on indicator X4 across T1 and T2
ind05_t1 ~~ ind05_t2   # This allows residual covariance on indicator X5 across T1 and T2
ind06_t1 ~~ ind06_t2   # This allows residual covariance on indicator X6 across T1 and T2
ind07_t1 ~~ ind07_t2   # This allows residual covariance on indicator X7 across T1 and T2
ind08_t1 ~~ ind08_t2   # This allows residual covariance on indicator X8 across T1 and T2
ind09_t1 ~~ ind09_t2   # This allows residual covariance on indicator X9 across T1 and T2
ind10_t1 ~~ ind10_t2   # This allows residual covariance on indicator X10 across T1 and T2
ind11_t1 ~~ ind11_t2   # This allows residual covariance on indicator X11 across T1 and T2
ind12_t1 ~~ ind12_t2   # This allows residual covariance on indicator X12 across T1 and T2

ind01_t1 ~~ res1*ind01_t1   # This allows residual variance on indicator X1 at T1 
ind02_t1 ~~ res2*ind02_t1   # This allows residual variance on indicator X2 at T1
ind03_t1 ~~ res3*ind03_t1   # This allows residual variance on indicator X3 at T1
ind04_t1 ~~ res4*ind04_t1   # This allows residual variance on indicator X4 at T1
ind05_t1 ~~ res5*ind05_t1   # This allows residual variance on indicator X5 at T1
ind06_t1 ~~ res6*ind06_t1   # This allows residual variance on indicator X6 at T1 
ind07_t1 ~~ res7*ind07_t1   # This allows residual variance on indicator X7 at T1
ind08_t1 ~~ res8*ind08_t1   # This allows residual variance on indicator X8 at T1
ind09_t1 ~~ res9*ind09_t1   # This allows residual variance on indicator X9 at T1
ind10_t1 ~~ res10*ind10_t1  # This allows residual variance on indicator X10 at T1
ind11_t1 ~~ res11*ind11_t1  # This allows residual variance on indicator X11 at T1
ind12_t1 ~~ res12*ind12_t1  # This allows residual variance on indicator X12 at T1

ind01_t2 ~~ res1*ind01_t2  # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2  # This allows residual variance on indicator X2 at T2 
ind03_t2 ~~ res3*ind03_t2  # This allows residual variance on indicator X3 at T2
ind04_t2 ~~ res4*ind04_t2  # This allows residual variance on indicator X4 at T2
ind05_t2 ~~ res5*ind05_t2  # This allows residual variance on indicator X5 at T2
ind06_t2 ~~ res6*ind06_t2  # This allows residual variance on indicator X6 at T2 
ind07_t2 ~~ res7*ind07_t2  # This allows residual variance on indicator X7 at T2 
ind08_t2 ~~ res8*ind08_t2  # This allows residual variance on indicator X8 at T2
ind09_t2 ~~ res9*ind09_t2  # This allows residual variance on indicator X9 at T2
ind10_t2 ~~ res10*ind10_t2 # This allows residual variance on indicator X10 at T2
ind11_t2 ~~ res11*ind11_t2 # This allows residual variance on indicator X11 at T2
ind12_t2 ~~ res12*ind12_t2 # This allows residual variance on indicator X12 at T2

ind01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind03_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind04_t1 ~ m4*1     # This estimates the intercept of X4 at T1
ind05_t1 ~ m5*1     # This estimates the intercept of X5 at T1
ind06_t1 ~ m6*1     # This estimates the intercept of X6 at T1
ind07_t1 ~ m7*1     # This estimates the intercept of X7 at T1
ind08_t1 ~ m8*1     # This estimates the intercept of X8 at T1
ind09_t1 ~ m9*1     # This estimates the intercept of X9 at T1
ind10_t1 ~ m10*1    # This estimates the intercept of X10 at T1
ind11_t1 ~ m11*1    # This estimates the intercept of X11 at T1
ind12_t1 ~ m12*1    # This estimates the intercept of X12 at T1

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind04_t2 ~ m4*1     # This estimates the intercept of X4 at T2
ind05_t2 ~ m5*1     # This estimates the intercept of X5 at T2
ind06_t2 ~ m6*1     # This estimates the intercept of X6 at T2
ind07_t2 ~ m7*1     # This estimates the intercept of X7 at T2
ind08_t2 ~ m8*1     # This estimates the intercept of X8 at T2
ind09_t2 ~ m9*1     # This estimates the intercept of X9 at T2
ind10_t2 ~ m10*1    # This estimates the intercept of X10 at T2
ind11_t2 ~ m11*1    # This estimates the intercept of X11 at T2
ind12_t2 ~ m12*1    # This estimates the intercept of X12 at T2

ind_goal_1 ~~ ind_goal_1
ind_goal_2 ~~ ind_goal_2
ind_goal_3 ~~ ind_goal_3

ind_goal_1 ~ 1
ind_goal_2 ~ 1
ind_goal_3 ~ 1
'

trait_facets_nrs <- list(a1 = c(1:3), b2 = c(4:6), c3 = c(7:9), d4 = c(10:12), e5 = c(13:15)) # matching facet nrs to traits 

# loop across 5 traits
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal (6 = ideal)
  items = paste0(bfi_versions[[6]], item_nrs)
  mod_names = paste0("sa07_", str_pad(trait_facets_nrs[[i]], 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(trait_template_mod_goal_accept, 
                                       c("trait" = short_name,
                                         "ind01" = items[1], "ind02" = items[2], "ind03" = items[3], "ind04" = items[4],
                                         "ind05" = items[5], "ind06" = items[6], "ind07" = items[7], "ind08" = items[8],
                                         "ind09" = items[9], "ind10" = items[10], "ind11" = items[11], "ind12" = items[12],
                                         "ind_goal_1" = mod_names[1], "ind_goal_2" = mod_names[2], "ind_goal_3" = mod_names[3]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), trait_model_fit))
}  

# 2nd, for frequency of self-acceptance behavior

trait_template_mod_frequ_accept <- '
trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 + lamb4*ind04_t1 + lamb5*ind05_t1 + lamb6*ind06_t1 + lamb7*ind07_t1 + lamb8*ind08_t1 + lamb9*ind09_t1 + lamb10*ind10_t1 + lamb11*ind11_t1 + lamb12*ind12_t1 # This specifies the measurement model for extra_t1 
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 + lamb4*ind04_t2 + lamb5*ind05_t2 + lamb6*ind06_t2 + lamb7*ind07_t2 + lamb8*ind08_t2 + lamb9*ind09_t2 + lamb10*ind10_t2 + lamb11*ind11_t2 + lamb12*ind12_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

frequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderator

trait_t2 ~ 1*trait_t1     # This parameter regresses trait_t2 perfectly on trait_t1
d_trait_1 =~ 1*trait_t2   # This defines the latent change score factor as measured perfectly by scores on trait_t2
trait_t2 ~ 0*1            # This line constrains the intercept of trait_t2 to 0
trait_t2 ~~ 0*trait_t2    # This fixes the variance of trait_t2 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t1 ~ 1               # This estimates the intercept of trait_t1 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t1 ~~ trait_t1         # This estimates the variance of trait_t1 
trait_t1 ~ frequ               # This estimates the moderation effect on personality at T1
d_trait_1 ~ trait_t1 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind01_t1 ~~ ind01_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind02_t1 ~~ ind02_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind03_t1 ~~ ind03_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind04_t1 ~~ ind04_t2   # This allows residual covariance on indicator X4 across T1 and T2
ind05_t1 ~~ ind05_t2   # This allows residual covariance on indicator X5 across T1 and T2
ind06_t1 ~~ ind06_t2   # This allows residual covariance on indicator X6 across T1 and T2
ind07_t1 ~~ ind07_t2   # This allows residual covariance on indicator X7 across T1 and T2
ind08_t1 ~~ ind08_t2   # This allows residual covariance on indicator X8 across T1 and T2
ind09_t1 ~~ ind09_t2   # This allows residual covariance on indicator X9 across T1 and T2
ind10_t1 ~~ ind10_t2   # This allows residual covariance on indicator X10 across T1 and T2
ind11_t1 ~~ ind11_t2   # This allows residual covariance on indicator X11 across T1 and T2
ind12_t1 ~~ ind12_t2   # This allows residual covariance on indicator X12 across T1 and T2

ind01_t1 ~~ res1*ind01_t1   # This allows residual variance on indicator X1 at T1 
ind02_t1 ~~ res2*ind02_t1   # This allows residual variance on indicator X2 at T1
ind03_t1 ~~ res3*ind03_t1   # This allows residual variance on indicator X3 at T1
ind04_t1 ~~ res4*ind04_t1   # This allows residual variance on indicator X4 at T1
ind05_t1 ~~ res5*ind05_t1   # This allows residual variance on indicator X5 at T1
ind06_t1 ~~ res6*ind06_t1   # This allows residual variance on indicator X6 at T1 
ind07_t1 ~~ res7*ind07_t1   # This allows residual variance on indicator X7 at T1
ind08_t1 ~~ res8*ind08_t1   # This allows residual variance on indicator X8 at T1
ind09_t1 ~~ res9*ind09_t1   # This allows residual variance on indicator X9 at T1
ind10_t1 ~~ res10*ind10_t1  # This allows residual variance on indicator X10 at T1
ind11_t1 ~~ res11*ind11_t1  # This allows residual variance on indicator X11 at T1
ind12_t1 ~~ res12*ind12_t1  # This allows residual variance on indicator X12 at T1

ind01_t2 ~~ res1*ind01_t2  # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2  # This allows residual variance on indicator X2 at T2 
ind03_t2 ~~ res3*ind03_t2  # This allows residual variance on indicator X3 at T2
ind04_t2 ~~ res4*ind04_t2  # This allows residual variance on indicator X4 at T2
ind05_t2 ~~ res5*ind05_t2  # This allows residual variance on indicator X5 at T2
ind06_t2 ~~ res6*ind06_t2  # This allows residual variance on indicator X6 at T2 
ind07_t2 ~~ res7*ind07_t2  # This allows residual variance on indicator X7 at T2 
ind08_t2 ~~ res8*ind08_t2  # This allows residual variance on indicator X8 at T2
ind09_t2 ~~ res9*ind09_t2  # This allows residual variance on indicator X9 at T2
ind10_t2 ~~ res10*ind10_t2 # This allows residual variance on indicator X10 at T2
ind11_t2 ~~ res11*ind11_t2 # This allows residual variance on indicator X11 at T2
ind12_t2 ~~ res12*ind12_t2 # This allows residual variance on indicator X12 at T2

ind01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind03_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind04_t1 ~ m4*1     # This estimates the intercept of X4 at T1
ind05_t1 ~ m5*1     # This estimates the intercept of X5 at T1
ind06_t1 ~ m6*1     # This estimates the intercept of X6 at T1
ind07_t1 ~ m7*1     # This estimates the intercept of X7 at T1
ind08_t1 ~ m8*1     # This estimates the intercept of X8 at T1
ind09_t1 ~ m9*1     # This estimates the intercept of X9 at T1
ind10_t1 ~ m10*1    # This estimates the intercept of X10 at T1
ind11_t1 ~ m11*1    # This estimates the intercept of X11 at T1
ind12_t1 ~ m12*1    # This estimates the intercept of X12 at T1

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind04_t2 ~ m4*1     # This estimates the intercept of X4 at T2
ind05_t2 ~ m5*1     # This estimates the intercept of X5 at T2
ind06_t2 ~ m6*1     # This estimates the intercept of X6 at T2
ind07_t2 ~ m7*1     # This estimates the intercept of X7 at T2
ind08_t2 ~ m8*1     # This estimates the intercept of X8 at T2
ind09_t2 ~ m9*1     # This estimates the intercept of X9 at T2
ind10_t2 ~ m10*1    # This estimates the intercept of X10 at T2
ind11_t2 ~ m11*1    # This estimates the intercept of X11 at T2
ind12_t2 ~ m12*1    # This estimates the intercept of X12 at T2

sa04_01_t2 ~~ sa04_01_t2
sa04_02_t2 ~~ sa04_02_t2
sa04_03_t2 ~~ sa04_03_t2

sa04_01_t2 ~ 1
sa04_02_t2 ~ 1
sa04_03_t2 ~ 1
'

# loop across 5 traits
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  items = paste0(bfi_versions[[6]], item_nrs)
  template_filled <- str_replace_all(trait_template_mod_frequ_accept, 
                                       c("trait" = short_name,
                                         "ind01" = items[1], "ind02" = items[2], "ind03" = items[3], "ind04" = items[4],
                                         "ind05" = items[5], "ind06" = items[6], "ind07" = items[7], "ind08" = items[8],
                                         "ind09" = items[9], "ind10" = items[10], "ind11" = items[11], "ind12" = items[12]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), trait_model_fit))
}  
3.9.1.1 Extraversion: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 62 22062.04 22292.5 0.799 0.056 0.074
# parameters of interest
params_lcs_extra_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_extra_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ goals", "goals ~~ goals", "extra_t1 ~ goals", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.058 NA NA
d_extra_1 =~ extra_t2 1.000 0.838 NA NA
d_extra_1 ~1 1.530 6.396 4.298 0.000
extra_t1 ~1 4.314 14.285 111.457 0.000
d_extra_1 ~~ d_extra_1 0.044 0.770 3.143 0.002
extra_t1 ~ goals 0.016 0.045 0.451 0.652
d_extra_1 ~ extra_t1 -0.362 -0.457 -4.422 0.000
d_extra_1 ~ goals -0.035 -0.124 -1.110 0.267
goals ~~ goals 0.719 1.000 3.637 0.000

The moderation effect of specific, facet-level acceptance goals with the extraversion change score (ideal-self) is not significantly different from zero, b = -0.035, p = 0.267.

3.9.1.2 Extraversion: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 62 21669.7 21900.16 0.834 0.053 0.076
# parameters of interest
params_lcs_extra_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_extra_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ frequ", "frequ ~~ frequ", "extra_t1 ~ frequ", # frequency of skill building
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.054 NA NA
d_extra_1 =~ extra_t2 1.000 0.834 NA NA
d_extra_1 ~1 1.697 7.278 4.724 0.000
extra_t1 ~1 4.313 14.643 111.437 0.000
d_extra_1 ~~ d_extra_1 0.041 0.760 3.130 0.002
extra_t1 ~ frequ 0.102 0.267 2.677 0.007
d_extra_1 ~ extra_t1 -0.401 -0.506 -4.836 0.000
d_extra_1 ~ frequ 0.054 0.178 1.977 0.048
frequ ~~ frequ 0.596 1.000 6.314 0.000

The frequency of self-acceptance behaviors significantly moderates changes in extraversion (ideal-self), b = 0.054, p = 0.048.

3.9.1.3 Agreeableness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 62 21463.47 21693.93 0.919 0.04 0.056
# parameters of interest
params_lcs_agree_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_agree_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ goals", "goals ~~ goals", "agree_t1 ~ goals", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 0.948 NA NA
d_agree_1 =~ agree_t2 1.000 0.680 NA NA
d_agree_1 ~1 0.808 2.194 3.376 0.001
agree_t1 ~1 4.282 8.347 95.747 0.000
d_agree_1 ~~ d_agree_1 0.125 0.921 4.841 0.000
agree_t1 ~ goals -0.007 -0.011 -0.143 0.886
d_agree_1 ~ agree_t1 -0.201 -0.280 -3.661 0.000
d_agree_1 ~ goals -0.012 -0.027 -0.310 0.756
goals ~~ goals 0.646 1.000 4.152 0.000

The moderation effect of specific, facet-level acceptance goals with the agreeableness change score (ideal-self) is not significantly different from zero, b = -0.012, p = 0.756.

3.9.1.4 Agreeableness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 62 21201.49 21431.94 0.912 0.043 0.06
# parameters of interest
params_lcs_agree_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_agree_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ frequ", "frequ ~~ frequ", "agree_t1 ~ frequ", # frequency of skill building
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
agree_t2 ~ agree_t1 1.000 0.947 NA NA
d_agree_1 =~ agree_t2 1.000 0.680 NA NA
d_agree_1 ~1 0.983 2.667 3.506 0.000
agree_t1 ~1 4.282 8.346 95.710 0.000
d_agree_1 ~~ d_agree_1 0.122 0.899 4.777 0.000
agree_t1 ~ frequ 0.237 0.356 4.566 0.000
d_agree_1 ~ agree_t1 -0.242 -0.337 -3.750 0.000
d_agree_1 ~ frequ 0.077 0.161 1.800 0.072
frequ ~~ frequ 0.595 1.000 6.516 0.000

The frequency of self-acceptance behaviors significantly moderates changes in agreeableness (ideal-self), b = 0.077, p = 0.072.

3.9.1.5 Conscientiousness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 62 19080.62 19311.08 0.906 0.043 0.058
# parameters of interest
params_lcs_consc_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_consc_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ goals", "goals ~~ goals", "consc_t1 ~ goals", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 0.930 NA NA
d_consc_1 =~ consc_t2 1.000 0.759 NA NA
d_consc_1 ~1 0.440 1.604 3.517 0.000
consc_t1 ~1 1.687 5.018 36.273 0.000
d_consc_1 ~~ d_consc_1 0.067 0.894 2.873 0.004
consc_t1 ~ goals 0.032 0.108 1.465 0.143
d_consc_1 ~ consc_t1 -0.263 -0.322 -3.441 0.001
d_consc_1 ~ goals 0.023 0.095 1.203 0.229
goals ~~ goals 1.330 1.000 7.901 0.000

The moderation effect of specific, facet-level acceptance goals with the conscientiousness change score (ideal-self) is not significantly different from zero, b = 0.023, p = 0.229.

3.9.1.6 Conscientiousness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 62 18771.81 19002.27 0.908 0.042 0.058
# parameters of interest
params_lcs_consc_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_consc_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ frequ", "frequ ~~ frequ", "consc_t1 ~ frequ", # frequency of skill building
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
consc_t2 ~ consc_t1 1.000 0.930 NA NA
d_consc_1 =~ consc_t2 1.000 0.758 NA NA
d_consc_1 ~1 0.523 1.951 3.741 0.000
consc_t1 ~1 1.687 5.135 36.326 0.000
d_consc_1 ~~ d_consc_1 0.061 0.852 2.797 0.005
consc_t1 ~ frequ -0.129 -0.301 -4.000 0.000
d_consc_1 ~ consc_t1 -0.312 -0.382 -3.686 0.000
d_consc_1 ~ frequ -0.082 -0.236 -2.456 0.014
frequ ~~ frequ 0.590 1.000 6.318 0.000

The frequency of self-acceptance behaviors significantly moderates changes in conscientiousness (ideal-self), b = -0.082, p = 0.014, although in an unexpected direction such that more frequent self-acceptance behaviors are associated with more pronounced decreases in conscientiousness.

3.9.1.7 Neuroticism: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 62 20702.82 20933.28 0.85 0.048 0.065
# parameters of interest
params_lcs_neuro_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_neuro_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ goals", "goals ~~ goals", "neuro_t1 ~ goals", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 0.859 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.769 NA NA
d_neuro_1 ~1 1.000 4.041 2.402 0.016
neuro_t1 ~1 4.571 16.521 151.284 0.000
d_neuro_1 ~~ d_neuro_1 0.055 0.896 3.282 0.001
neuro_t1 ~ goals -0.001 -0.004 -0.066 0.948
d_neuro_1 ~ neuro_t1 -0.224 -0.250 -2.492 0.013
d_neuro_1 ~ goals -0.062 -0.204 -2.185 0.029
goals ~~ goals 0.656 1.000 3.003 0.003

Trait-/facet-level specific acceptance goals significantly moderate changes in neuroticism (ideal-self), b = -0.062, p = 0.029.

3.9.1.8 Neuroticism: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 62 20384.56 20615.01 0.866 0.046 0.065
# parameters of interest
params_lcs_neuro_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_neuro_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ frequ", "frequ ~~ frequ", "neuro_t1 ~ frequ", # frequency of skill building
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 0.859 NA NA
d_neuro_1 =~ neuro_t2 1.000 0.767 NA NA
d_neuro_1 ~1 1.104 4.419 2.529 0.011
neuro_t1 ~1 4.571 16.352 151.202 0.000
d_neuro_1 ~~ d_neuro_1 0.057 0.917 3.299 0.001
neuro_t1 ~ frequ 0.067 0.187 2.048 0.041
d_neuro_1 ~ neuro_t1 -0.246 -0.276 -2.615 0.009
d_neuro_1 ~ frequ 0.049 0.151 1.774 0.076
frequ ~~ frequ 0.605 1.000 6.287 0.000

The moderation effect of the frequency of self-acceptance behaviors with the neuroticism change score (ideal-self) is not significantly different from zero, b = 0.049, p = 0.076.

3.9.1.9 Openness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
#kable(broom::glance(fit_mi_lcs_openn_ideal_specif_hyp7) %>% 
#        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
# WARNING: model did not converge properly!

# parameters of interest
params_lcs_openn_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_openn_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ goals", "goals ~~ goals", "openn_t1 ~ goals", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.906 NA NA
d_openn_1 =~ openn_t2 1.000 0.683 NA NA
d_openn_1 ~1 0.562 55.760 NA NA
openn_t1 ~1 3.156 236.388 NA NA
d_openn_1 ~~ d_openn_1 0.000 0.945 NA NA
openn_t1 ~ goals -0.002 -0.109 NA NA
d_openn_1 ~ openn_t1 -0.178 -0.236 NA NA
d_openn_1 ~ goals -0.001 -0.036 NA NA
goals ~~ goals 0.492 1.000 NA NA

The moderation effect of specific, facet-level acceptance goals with the openness change score (ideal-self) is not significantly different from zero, b = -0.001, p = NA. (… model did not converge properly!)

3.9.1.10 Openness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of skill building behavior):

# model fit
#kable(broom::glance(fit_mi_lcs_openn_ideal_frequ_hyp7) %>% 
#        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
# WARNING: model did not converge properly!

# parameters of interest
params_lcs_openn_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_openn_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ frequ", "frequ ~~ frequ", "openn_t1 ~ frequ", # frequency of skill building
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
openn_t2 ~ openn_t1 1.000 0.906 NA NA
d_openn_1 =~ openn_t2 1.000 0.684 NA NA
d_openn_1 ~1 0.649 42.514 NA NA
openn_t1 ~1 3.156 156.066 NA NA
d_openn_1 ~~ d_openn_1 0.000 0.922 NA NA
openn_t1 ~ frequ 0.007 0.253 NA NA
d_openn_1 ~ openn_t1 -0.206 -0.273 NA NA
d_openn_1 ~ frequ 0.003 0.160 NA NA
frequ ~~ frequ 0.610 1.000 NA NA

The moderation effect of frequency of self-acceptance behaviors with the openness change score (ideal-self) is not significantly different from zero, b = 0.003, p = NA. (… model did not converge properly!)

3.9.2 Big Five facets

Run models for all facets with a template & loop:

Show the code
# create templates:

# 1st, for facet-specific acceptance goal

facet_template_mod_goal_accept <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1         # This estimates the variance of facet_t1 
facet_t1 ~ ind_goal               # This estimates the moderation effect on personality at T1
d_facet_1 ~ facet_t1 + ind_goal   # This estimates the self-feedback parameter and the moderation effect on the change score

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  items = paste0(bfi_versions[[6]], item_nrs)
  mod_name = paste0("sa07_", str_pad(i-5, 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(facet_template_mod_goal_accept, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                         "ind_goal" = mod_name))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), facet_model_fit))
}  

# 2nd, for frequency of self-acceptance behavior

facet_template_mod_frequ_accept <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

frequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderator

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1         # This estimates the variance of facet_t1 
facet_t1 ~ frequ               # This estimates the moderation effect on personality at T1
d_facet_1 ~ facet_t1 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

sa04_01_t2 ~~ sa04_01_t2
sa04_02_t2 ~~ sa04_02_t2
sa04_03_t2 ~~ sa04_03_t2

sa04_01_t2 ~ 1
sa04_02_t2 ~ 1
sa04_03_t2 ~ 1
'

# loop across 15 facets
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  items = paste0(bfi_versions[[6]], item_nrs)
  template_filled <- str_replace_all(facet_template_mod_frequ_accept, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4]))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), facet_model_fit))
}  
3.9.2.1 Sociability - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7471.625 7557.116 0.923 0.064 0.057
# parameters of interest
params_lcs_socia_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_socia_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~ sa07_01_t1", "sa07_01_t1 ~~ sa07_01_t1", "d_socia_1 ~ sa07_01_t1", # acceptance goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.013 NA NA
d_socia_1 =~ socia_t2 1.000 0.742 NA NA
d_socia_1 ~1 1.194 4.325 2.861 0.004
socia_t1 ~1 4.187 11.110 43.372 0.000
d_socia_1 ~~ d_socia_1 0.063 0.830 2.270 0.023
d_socia_1 ~ socia_t1 -0.264 -0.360 -2.533 0.011
d_socia_1 ~ sa07_01_t1 -0.031 -0.153 -1.197 0.231
sa07_01_t1 ~~ sa07_01_t1 1.874 1.000 17.535 0.000

The moderation effect of the facet-specific acceptance goal with the sociability change score (ideal-self) is not significantly different from zero, b = -0.031, p = 0.231.

3.9.2.2 Sociability - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 9102.507 9214.018 0.955 0.048 0.055
# parameters of interest
params_lcs_socia_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_socia_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~ frequ", "frequ ~~ frequ", "socia_t1 ~ frequ", # frequency of skill building
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.017 NA NA
d_socia_1 =~ socia_t2 1.000 0.756 NA NA
d_socia_1 ~1 1.218 4.526 2.704 0.007
socia_t1 ~1 4.321 11.925 111.212 0.000
d_socia_1 ~~ d_socia_1 0.061 0.844 2.205 0.027
socia_t1 ~ frequ -0.007 -0.014 -0.156 0.876
d_socia_1 ~ socia_t1 -0.293 -0.394 -2.851 0.004
d_socia_1 ~ frequ 0.005 0.015 0.151 0.880
frequ ~~ frequ 0.605 1.000 6.302 0.000

The moderation effect of the frequency of self-acceptance behaviors with sociability change score (ideal-self) is not significantly different from zero, b = 0.005, p = 0.88.

3.9.2.3 Assertiveness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7690.265 7775.757 0.972 0.036 0.046
# parameters of interest
params_lcs_asser_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_asser_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~ sa07_02_t1", "sa07_02_t1 ~~ sa07_02_t1", "d_asser_1 ~ sa07_02_t1", # acceptance goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.015 NA NA
d_asser_1 =~ asser_t2 1.000 0.728 NA NA
d_asser_1 ~1 1.114 5.403 2.868 0.004
asser_t1 ~1 4.087 14.209 55.732 0.000
d_asser_1 ~~ d_asser_1 0.036 0.849 2.181 0.029
d_asser_1 ~ asser_t1 -0.266 -0.370 -2.839 0.005
d_asser_1 ~ sa07_02_t1 -0.013 -0.089 -0.998 0.318
sa07_02_t1 ~~ sa07_02_t1 1.879 1.000 18.465 0.000

The moderation effect of the facet-specific acceptance goal with the assertiveness change score (ideal-self) is not significantly different from zero, b = -0.013, p = 0.318.

3.9.2.4 Assertiveness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 9299.592 9411.103 0.993 0.018 0.042
# parameters of interest
params_lcs_asser_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_asser_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~ frequ", "frequ ~~ frequ", "asser_t1 ~ frequ", # frequency of skill building
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.017 NA NA
d_asser_1 =~ asser_t2 1.000 0.729 NA NA
d_asser_1 ~1 1.264 5.977 3.127 0.002
asser_t1 ~1 4.148 14.069 84.899 0.000
d_asser_1 ~~ d_asser_1 0.036 0.812 2.241 0.025
asser_t1 ~ frequ 0.096 0.250 2.292 0.022
d_asser_1 ~ asser_t1 -0.312 -0.435 -3.240 0.001
d_asser_1 ~ frequ 0.059 0.213 1.834 0.067
frequ ~~ frequ 0.589 1.000 6.286 0.000

The moderation effect of the frequency of self-acceptance behaviors with the assertiveness change score (ideal-self) is not significantly different from zero, b = 0.059, p = 0.067.

3.9.2.5 Energy - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7026.581 7112.073 0.955 0.037 0.048
# parameters of interest
params_lcs_energ_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_energ_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~ sa07_03_t1", "sa07_03_t1 ~~ sa07_03_t1", "d_energ_1 ~ sa07_03_t1", # acceptance goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.052 NA NA
d_energ_1 =~ energ_t2 1.000 0.818 NA NA
d_energ_1 ~1 0.770 5.868 3.257 0.001
energ_t1 ~1 2.439 14.446 36.320 0.000
d_energ_1 ~~ d_energ_1 0.013 0.777 0.847 0.397
d_energ_1 ~ energ_t1 -0.337 -0.434 -3.366 0.001
d_energ_1 ~ sa07_03_t1 0.013 0.142 1.098 0.272
sa07_03_t1 ~~ sa07_03_t1 1.956 1.000 18.685 0.000

The moderation effect of the facet-specific acceptance goal with the energy change score (ideal-self) is not significantly different from zero, b = 0.013, p = 0.272.

3.9.2.6 Energy - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 8614.691 8726.202 0.97 0.034 0.05
# parameters of interest
params_lcs_energ_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_energ_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~ frequ", "frequ ~~ frequ", "energ_t1 ~ frequ", # frequency of skill building
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.024 NA NA
d_energ_1 =~ energ_t2 1.000 0.815 NA NA
d_energ_1 ~1 0.948 7.059 3.405 0.001
energ_t1 ~1 2.395 14.185 38.739 0.000
d_energ_1 ~~ d_energ_1 0.014 0.793 0.948 0.343
energ_t1 ~ frequ -0.086 -0.394 -1.952 0.051
d_energ_1 ~ energ_t1 -0.394 -0.495 -3.392 0.001
d_energ_1 ~ frequ -0.030 -0.173 -1.092 0.275
frequ ~~ frequ 0.597 1.000 6.481 0.000

The moderation effect of the frequency of self-acceptance behaviors with the energy change score (ideal-self) is not significantly different from zero, b = -0.03, p = 0.275.

3.9.2.7 Compassion - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7941.424 8026.916 1 0 0.033
# parameters of interest
params_lcs_compa_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_compa_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~ sa07_04_t1", "sa07_04_t1 ~~ sa07_04_t1", "d_compa_1 ~ sa07_04_t1", # acceptance goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 0.933 NA NA
d_compa_1 =~ compa_t2 1.000 0.612 NA NA
d_compa_1 ~1 0.602 1.551 1.230 0.219
compa_t1 ~1 4.303 7.271 49.056 0.000
d_compa_1 ~~ d_compa_1 0.142 0.941 2.321 0.020
d_compa_1 ~ compa_t1 -0.141 -0.215 -1.312 0.189
d_compa_1 ~ sa07_04_t1 -0.034 -0.115 -1.147 0.251
sa07_04_t1 ~~ sa07_04_t1 1.742 1.000 17.597 0.000

The moderation effect of the facet-specific acceptance goal with the compassion change score (ideal-self) is not significantly different from zero, b = -0.034, p = 0.251.

3.9.2.8 Compassion - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 9566.68 9678.19 0.98 0.03 0.052
# parameters of interest
params_lcs_compa_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_compa_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~ frequ", "frequ ~~ frequ", "compa_t1 ~ frequ", # frequency of skill building
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
compa_t2 ~ compa_t1 1.000 0.930 NA NA
d_compa_1 =~ compa_t2 1.000 0.614 NA NA
d_compa_1 ~1 0.475 1.200 0.876 0.381
compa_t1 ~1 4.298 7.151 89.663 0.000
d_compa_1 ~~ d_compa_1 0.150 0.954 2.255 0.024
compa_t1 ~ frequ 0.294 0.377 4.474 0.000
d_compa_1 ~ compa_t1 -0.131 -0.198 -1.062 0.288
d_compa_1 ~ frequ -0.019 -0.037 -0.242 0.809
frequ ~~ frequ 0.596 1.000 6.477 0.000

The moderation effect of the frequency of self-acceptance behaviors with the compassion change score (ideal-self) is not significantly different from zero, b = -0.019, p = 0.809.

3.9.2.9 Respectfulness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 6387.403 6472.895 0.985 0.028 0.043
# parameters of interest
params_lcs_respe_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_respe_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~ sa07_05_t1", "sa07_05_t1 ~~ sa07_05_t1", "d_respe_1 ~ sa07_05_t1", # acceptance goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 0.849 NA NA
d_respe_1 =~ respe_t2 1.000 0.623 NA NA
d_respe_1 ~1 0.351 1.534 0.801 0.423
respe_t1 ~1 4.756 15.248 115.244 0.000
d_respe_1 ~~ d_respe_1 0.052 0.989 2.849 0.004
d_respe_1 ~ respe_t1 -0.078 -0.106 -0.855 0.393
d_respe_1 ~ sa07_05_t1 -0.005 -0.026 -0.268 0.789
sa07_05_t1 ~~ sa07_05_t1 1.697 1.000 11.267 0.000

The moderation effect of the facet-specific acceptance goal with the respectfulness change score (ideal-self) is not significantly different from zero, b = -0.005, p = 0.789.

3.9.2.10 Respectfulness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 8012.991 8124.502 0.988 0.025 0.04
# parameters of interest
params_lcs_respe_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_respe_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~ frequ", "frequ ~~ frequ", "respe_t1 ~ frequ", # frequency of skill building
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
respe_t2 ~ respe_t1 1.000 0.848 NA NA
d_respe_1 =~ respe_t2 1.000 0.623 NA NA
d_respe_1 ~1 0.490 2.123 0.985 0.325
respe_t1 ~1 4.703 14.964 163.221 0.000
d_respe_1 ~~ d_respe_1 0.052 0.978 2.886 0.004
respe_t1 ~ frequ 0.162 0.395 4.773 0.000
d_respe_1 ~ respe_t1 -0.109 -0.149 -1.042 0.298
d_respe_1 ~ frequ 0.036 0.120 1.003 0.316
frequ ~~ frequ 0.590 1.000 6.436 0.000

The moderation effect of the frequency of self-acceptance behaviors with the respectfulness change score (ideal-self) is not significantly different from zero, b = 0.036, p = 0.316.

3.9.2.11 Trust - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7715.436 7800.928 0.982 0.03 0.039
# parameters of interest
params_lcs_trust_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_trust_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~ sa07_06_t1", "sa07_06_t1 ~~ sa07_06_t1", "d_trust_1 ~ sa07_06_t1", # acceptance goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 0.980 NA NA
d_trust_1 =~ trust_t2 1.000 0.678 NA NA
d_trust_1 ~1 0.390 1.392 2.241 0.025
trust_t1 ~1 1.989 4.911 27.895 0.000
d_trust_1 ~~ d_trust_1 0.070 0.890 2.815 0.005
d_trust_1 ~ trust_t1 -0.211 -0.305 -2.576 0.010
d_trust_1 ~ sa07_06_t1 0.020 0.098 1.064 0.287
sa07_06_t1 ~~ sa07_06_t1 1.995 1.000 18.813 0.000

The moderation effect of the facet-specific acceptance goal with the trust change score (ideal-self) is not significantly different from zero, b = 0.02, p = 0.287.

3.9.2.12 Trust - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 9304.98 9416.491 0.959 0.047 0.053
# parameters of interest
params_lcs_trust_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_trust_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~ frequ", "frequ ~~ frequ", "trust_t1 ~ frequ", # frequency of skill building
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
trust_t2 ~ trust_t1 1.000 0.990 NA NA
d_trust_1 =~ trust_t2 1.000 0.683 NA NA
d_trust_1 ~1 0.547 1.907 3.131 0.002
trust_t1 ~1 1.905 4.576 38.054 0.000
d_trust_1 ~~ d_trust_1 0.070 0.850 2.941 0.003
trust_t1 ~ frequ -0.147 -0.275 -2.884 0.004
d_trust_1 ~ trust_t1 -0.267 -0.388 -2.945 0.003
d_trust_1 ~ frequ -0.078 -0.211 -1.695 0.090
frequ ~~ frequ 0.608 1.000 6.436 0.000

The moderation effect of the frequency of self-acceptance behaviors with the trust change score (ideal-self) is not significantly different from zero, b = -0.078, p = 0.09.

3.9.2.13 Organization - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 6603.395 6688.887 0.938 0.051 0.049
# parameters of interest
params_lcs_organ_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_organ_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~ sa07_07_t1", "sa07_07_t1 ~~ sa07_07_t1", "d_organ_1 ~ sa07_07_t1", # acceptance goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 0.979 NA NA
d_organ_1 =~ organ_t2 1.000 0.831 NA NA
d_organ_1 ~1 0.556 2.208 2.510 0.012
organ_t1 ~1 1.598 5.381 22.933 0.000
d_organ_1 ~~ d_organ_1 0.053 0.834 2.198 0.028
d_organ_1 ~ organ_t1 -0.349 -0.411 -2.392 0.017
d_organ_1 ~ sa07_07_t1 0.014 0.082 0.910 0.363
sa07_07_t1 ~~ sa07_07_t1 2.348 1.000 24.004 0.000

The moderation effect of the facet-specific acceptance goal with the organization change score (ideal-self) is not significantly different from zero, b = 0.014, p = 0.363.

3.9.2.14 Organization - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 8128.057 8239.568 0.973 0.035 0.045
# parameters of interest
params_lcs_organ_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_organ_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~ frequ", "frequ ~~ frequ", "organ_t1 ~ frequ", # frequency of skill building
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
organ_t2 ~ organ_t1 1.000 0.989 NA NA
d_organ_1 =~ organ_t2 1.000 0.840 NA NA
d_organ_1 ~1 0.755 3.293 3.147 0.002
organ_t1 ~1 1.681 6.228 36.274 0.000
d_organ_1 ~~ d_organ_1 0.039 0.734 2.014 0.044
organ_t1 ~ frequ -0.120 -0.338 -3.426 0.001
d_organ_1 ~ organ_t1 -0.444 -0.523 -3.074 0.002
d_organ_1 ~ frequ -0.100 -0.331 -2.504 0.012
frequ ~~ frequ 0.581 1.000 6.370 0.000

The frequency of self-acceptance behaviors significantly moderates changes in organization (ideal-self), b = -0.1, p = 0.012.

3.9.2.15 Productiveness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 6202.442 6287.934 0.858 0.071 0.067
# parameters of interest
params_lcs_produ_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_produ_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~ sa07_08_t1", "sa07_08_t1 ~~ sa07_08_t1", "d_produ_1 ~ sa07_08_t1", # acceptance goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 0.913 NA NA
d_produ_1 =~ produ_t2 1.000 0.715 NA NA
d_produ_1 ~1 0.312 1.291 1.508 0.131
produ_t1 ~1 1.552 5.025 26.068 0.000
d_produ_1 ~~ d_produ_1 0.054 0.930 2.388 0.017
d_produ_1 ~ produ_t1 -0.207 -0.265 -1.520 0.129
d_produ_1 ~ sa07_08_t1 0.002 0.009 0.102 0.918
sa07_08_t1 ~~ sa07_08_t1 2.126 1.000 20.634 0.000

The moderation effect of the facet-specific acceptance goal with the productiveness change score (ideal-self) is not significantly different from zero, b = 0.002, p = 0.918.

3.9.2.16 Productiveness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 7773.995 7885.506 0.946 0.047 0.057
# parameters of interest
params_lcs_produ_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_produ_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~ frequ", "frequ ~~ frequ", "produ_t1 ~ frequ", # frequency of skill building
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
produ_t2 ~ produ_t1 1.000 0.910 NA NA
d_produ_1 =~ produ_t2 1.000 0.712 NA NA
d_produ_1 ~1 0.373 1.568 1.746 0.081
produ_t1 ~1 1.596 5.247 40.447 0.000
d_produ_1 ~~ d_produ_1 0.050 0.883 2.408 0.016
produ_t1 ~ frequ -0.087 -0.222 -2.551 0.011
d_produ_1 ~ produ_t1 -0.242 -0.310 -1.737 0.082
d_produ_1 ~ frequ -0.070 -0.230 -1.910 0.056
frequ ~~ frequ 0.605 1.000 6.321 0.000

The moderation effect of the frequency of self-acceptance behaviors with the productiveness change score (ideal-self) is not significantly different from zero, b = -0.07, p = 0.056.

3.9.2.17 Responsibility - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7078.781 7164.273 0.991 0.02 0.04
# parameters of interest
params_lcs_respo_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_respo_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~ sa07_09_t1", "sa07_09_t1 ~~ sa07_09_t1", "d_respo_1 ~ sa07_09_t1", # acceptance goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 0.954 NA NA
d_respo_1 =~ respo_t2 1.000 0.766 NA NA
d_respo_1 ~1 1.248 3.239 2.979 0.003
respo_t1 ~1 4.337 9.036 49.300 0.000
d_respo_1 ~~ d_respo_1 0.131 0.880 3.168 0.002
d_respo_1 ~ respo_t1 -0.277 -0.345 -3.021 0.003
d_respo_1 ~ sa07_09_t1 -0.018 -0.067 -0.769 0.442
sa07_09_t1 ~~ sa07_09_t1 2.122 1.000 20.214 0.000

The moderation effect of the facet-specific acceptance goal with the responsibility change score (ideal-self) is not significantly different from zero, b = -0.018, p = 0.442.

3.9.2.18 Responsibility - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 8649.86 8761.371 0.976 0.034 0.047
# parameters of interest
params_lcs_respo_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_respo_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~ frequ", "frequ ~~ frequ", "respo_t1 ~ frequ", # frequency of skill building
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
respo_t2 ~ respo_t1 1.000 0.952 NA NA
d_respo_1 =~ respo_t2 1.000 0.764 NA NA
d_respo_1 ~1 1.336 3.459 3.087 0.002
respo_t1 ~1 4.269 8.869 76.987 0.000
d_respo_1 ~~ d_respo_1 0.129 0.867 3.223 0.001
respo_t1 ~ frequ 0.201 0.320 3.220 0.001
d_respo_1 ~ respo_t1 -0.308 -0.384 -3.088 0.002
d_respo_1 ~ frequ 0.075 0.149 1.378 0.168
frequ ~~ frequ 0.587 1.000 6.156 0.000

The moderation effect of the frequency of self-acceptance behaviors with the responsibility change score (ideal-self) is not significantly different from zero, b = 0.075, p = 0.168.

3.9.2.19 Anxiety - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7695.419 7780.911 0.861 0.053 0.051
# parameters of interest
params_lcs_anxie_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_anxie_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~ sa07_10_t1", "sa07_10_t1 ~~ sa07_10_t1", "d_anxie_1 ~ sa07_10_t1", # acceptance goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 0.804 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.889 NA NA
d_anxie_1 ~1 1.518 4.886 1.268 0.205
anxie_t1 ~1 4.564 16.247 67.999 0.000
d_anxie_1 ~~ d_anxie_1 0.087 0.906 1.638 0.101
d_anxie_1 ~ anxie_t1 -0.337 -0.305 -1.331 0.183
d_anxie_1 ~ sa07_10_t1 -0.005 -0.024 -0.199 0.843
sa07_10_t1 ~~ sa07_10_t1 2.110 1.000 20.987 0.000

The moderation effect of the facet-specific acceptance goal with the anxiety change score (ideal-self) is not significantly different from zero, b = -0.005, p = 0.843.

3.9.2.20 Anxiety - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 9273.79 9385.301 0.916 0.051 0.06
# parameters of interest
params_lcs_anxie_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_anxie_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~ frequ", "frequ ~~ frequ", "anxie_t1 ~ frequ", # frequency of skill building
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 0.798 NA NA
d_anxie_1 =~ anxie_t2 1.000 0.844 NA NA
d_anxie_1 ~1 1.344 4.144 1.100 0.271
anxie_t1 ~1 4.584 14.958 135.458 0.000
d_anxie_1 ~~ d_anxie_1 0.097 0.926 1.532 0.125
anxie_t1 ~ frequ 0.124 0.316 2.374 0.018
d_anxie_1 ~ anxie_t1 -0.304 -0.287 -1.156 0.248
d_anxie_1 ~ frequ 0.037 0.088 0.638 0.523
frequ ~~ frequ 0.610 1.000 6.380 0.000

The moderation effect of the frequency of self-acceptance behaviors with the anxiety change score (ideal-self) is not significantly different from zero, b = 0.037, p = 0.523.

3.9.2.21 Depression - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 6399.091 6484.582 0.915 0.06 0.064
# parameters of interest
params_lcs_depre_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_depre_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~ sa07_11_t1", "sa07_11_t1 ~~ sa07_11_t1", "d_depre_1 ~ sa07_11_t1", # acceptance goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 0.900 NA NA
d_depre_1 =~ depre_t2 1.000 0.574 NA NA
d_depre_1 ~1 0.415 2.734 0.631 0.528
depre_t1 ~1 4.466 18.755 89.471 0.000
d_depre_1 ~~ d_depre_1 0.023 0.979 1.547 0.122
d_depre_1 ~ depre_t1 -0.091 -0.142 -0.632 0.528
d_depre_1 ~ sa07_11_t1 -0.005 -0.052 -0.432 0.666
sa07_11_t1 ~~ sa07_11_t1 2.235 1.000 22.671 0.000

The moderation effect of the facet-specific acceptance goal with the depression change score (ideal-self) is not significantly different from zero, b = -0.005, p = 0.666.

3.9.2.22 Depression - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 7973.333 8084.844 0.93 0.056 0.062
# parameters of interest
params_lcs_depre_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_depre_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~ frequ", "frequ ~~ frequ", "depre_t1 ~ frequ", # frequency of skill building
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
depre_t2 ~ depre_t1 1.000 0.897 NA NA
d_depre_1 =~ depre_t2 1.000 0.575 NA NA
d_depre_1 ~1 0.401 2.575 0.644 0.519
depre_t1 ~1 4.398 18.083 124.854 0.000
d_depre_1 ~~ d_depre_1 0.023 0.952 1.530 0.126
depre_t1 ~ frequ 0.020 0.063 0.677 0.498
d_depre_1 ~ depre_t1 -0.091 -0.142 -0.652 0.514
d_depre_1 ~ frequ 0.035 0.175 1.418 0.156
frequ ~~ frequ 0.611 1.000 6.269 0.000

The moderation effect of the frequency of self-acceptance behaviors with the depression change score (ideal-self) is not significantly different from zero, b = 0.035, p = 0.156.

3.9.2.23 Volatility - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7134.715 7220.206 0.939 0.046 0.05
# parameters of interest
params_lcs_volat_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_volat_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~ sa07_12_t1", "sa07_12_t1 ~~ sa07_12_t1", "d_volat_1 ~ sa07_12_t1", # acceptance goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 0.827 NA NA
d_volat_1 =~ volat_t2 1.000 0.748 NA NA
d_volat_1 ~1 0.368 0.947 1.541 0.123
volat_t1 ~1 1.691 3.936 19.277 0.000
d_volat_1 ~~ d_volat_1 0.145 0.961 2.844 0.004
d_volat_1 ~ volat_t1 -0.178 -0.197 -1.332 0.183
d_volat_1 ~ sa07_12_t1 -0.005 -0.016 -0.192 0.848
sa07_12_t1 ~~ sa07_12_t1 1.653 1.000 17.245 0.000

The moderation effect of the facet-specific acceptance goal with the volatility change score (ideal-self) is not significantly different from zero, b = -0.005, p = 0.848.

3.9.2.24 Volatility - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 8783.451 8894.962 0.968 0.036 0.051
# parameters of interest
params_lcs_volat_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_volat_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~ frequ", "frequ ~~ frequ", "volat_t1 ~ frequ", # frequency of skill building
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
volat_t2 ~ volat_t1 1.000 0.834 NA NA
d_volat_1 =~ volat_t2 1.000 0.740 NA NA
d_volat_1 ~1 0.411 1.144 1.841 0.066
volat_t1 ~1 1.682 4.156 40.260 0.000
d_volat_1 ~~ d_volat_1 0.120 0.929 2.798 0.005
volat_t1 ~ frequ -0.126 -0.238 -2.746 0.006
d_volat_1 ~ volat_t1 -0.214 -0.241 -1.595 0.111
d_volat_1 ~ frequ -0.087 -0.186 -1.754 0.079
frequ ~~ frequ 0.587 1.000 6.190 0.000

The moderation effect of the frequency of self-acceptance behaviors with the volatility change score (ideal-self) is significantly different from zero, b = -0.087, p = 0.079.

3.9.2.25 Curiosity - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7515.334 7600.826 0.996 0.011 0.037
# parameters of interest
params_lcs_curio_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_curio_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~ sa07_13_t1", "sa07_13_t1 ~~ sa07_13_t1", "d_curio_1 ~ sa07_13_t1", # acceptance goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 0.967 NA NA
d_curio_1 =~ curio_t2 1.000 0.669 NA NA
d_curio_1 ~1 1.053 4.764 2.053 0.040
curio_t1 ~1 4.623 14.462 82.736 0.000
d_curio_1 ~~ d_curio_1 0.044 0.893 1.776 0.076
d_curio_1 ~ curio_t1 -0.223 -0.323 -1.999 0.046
d_curio_1 ~ sa07_13_t1 -0.023 -0.142 -1.172 0.241
sa07_13_t1 ~~ sa07_13_t1 1.779 1.000 14.762 0.000

The moderation effect of the facet-specific acceptance goal with the curiosity change score (ideal-self) is not significantly different from zero, b = -0.023, p = 0.241.

3.9.2.26 Curiosity - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 9159.803 9271.314 0.981 0.028 0.047
# parameters of interest
params_lcs_curio_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_curio_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~ frequ", "frequ ~~ frequ", "curio_t1 ~ frequ", # frequency of skill building
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
curio_t2 ~ curio_t1 1.000 0.963 NA NA
d_curio_1 =~ curio_t2 1.000 0.669 NA NA
d_curio_1 ~1 0.948 4.241 1.775 0.076
curio_t1 ~1 4.519 14.040 127.188 0.000
d_curio_1 ~~ d_curio_1 0.045 0.910 1.794 0.073
curio_t1 ~ frequ 0.080 0.196 1.888 0.059
d_curio_1 ~ curio_t1 -0.212 -0.305 -1.811 0.070
d_curio_1 ~ frequ 0.020 0.069 0.501 0.616
frequ ~~ frequ 0.623 1.000 6.359 0.000

The moderation effect of the frequency of self-acceptance behaviors with the curiosity change score (ideal-self) is not significantly different from zero, b = 0.02, p = 0.616.

3.9.2.27 Aesthetic - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7587.128 7672.62 0.988 0.032 0.042
# parameters of interest
params_lcs_aesth_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_aesth_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~ sa07_14_t1", "sa07_14_t1 ~~ sa07_14_t1", "d_aesth_1 ~ sa07_14_t1", # acceptance goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.945 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.668 NA NA
d_aesth_1 ~1 0.597 12.843 2.538 0.011
aesth_t1 ~1 3.153 47.947 46.127 0.000
d_aesth_1 ~~ d_aesth_1 0.002 0.918 0.448 0.654
d_aesth_1 ~ aesth_t1 -0.187 -0.265 -2.563 0.010
d_aesth_1 ~ sa07_14_t1 -0.003 -0.099 -0.753 0.452
sa07_14_t1 ~~ sa07_14_t1 1.892 1.000 18.906 0.000

The moderation effect of the facet-specific acceptance goal with the aesthetic change score (ideal-self) is not significantly different from zero, b = -0.003, p = 0.452.

3.9.2.28 Aesthetic - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 9191.707 9303.218 0.988 0.03 0.047
# parameters of interest
params_lcs_aesth_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_aesth_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~ frequ", "frequ ~~ frequ", "aesth_t1 ~ frequ", # frequency of skill building
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 0.945 NA NA
d_aesth_1 =~ aesth_t2 1.000 0.667 NA NA
d_aesth_1 ~1 0.699 15.446 2.737 0.006
aesth_t1 ~1 3.158 49.286 45.331 0.000
d_aesth_1 ~~ d_aesth_1 0.002 0.891 0.439 0.660
aesth_t1 ~ frequ 0.020 0.236 0.874 0.382
d_aesth_1 ~ aesth_t1 -0.222 -0.315 -2.797 0.005
d_aesth_1 ~ frequ 0.012 0.199 0.845 0.398
frequ ~~ frequ 0.598 1.000 6.388 0.000

The moderation effect of the frequency of self-acceptance behaviors with the aesthetic change score (ideal-self) is not significantly different from zero, b = 0.012, p = 0.398.

3.9.2.29 Imagination - specific, facet-level acceptance goal as moderator of change

Results summary (*sa07_$$_t1* = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 23 7080.126 7165.618 0.973 0.03 0.051
# parameters of interest
params_lcs_imagi_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_imagi_ideal_specif_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
  select(term, estimate, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~ sa07_15_t1", "sa07_15_t1 ~~ sa07_15_t1", "d_imagi_1 ~ sa07_15_t1", # acceptance goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_specif_hyp7, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.883 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.682 NA NA
d_imagi_1 ~1 0.643 2.426 0.994 0.320
imagi_t1 ~1 4.670 13.616 80.685 0.000
d_imagi_1 ~~ d_imagi_1 0.067 0.956 2.587 0.010
d_imagi_1 ~ imagi_t1 -0.154 -0.199 -1.125 0.261
d_imagi_1 ~ sa07_15_t1 0.010 0.053 0.559 0.576
sa07_15_t1 ~~ sa07_15_t1 2.100 1.000 21.075 0.000

The moderation effect of the facet-specific acceptance goal with the imagination change score (ideal-self) is not significantly different from zero, b = 0.01, p = 0.576.

3.9.2.30 Imagination - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
304 30 8659.476 8770.987 0.963 0.038 0.052
# parameters of interest
params_lcs_imagi_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_imagi_ideal_frequ_hyp7, conf.int = FALSE, conf.level = 0.95) %>% 
        select(term, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~ frequ", "frequ ~~ frequ", "imagi_t1 ~ frequ", # frequency of skill building
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_frequ_hyp7, digits = 3) 
term estimate std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 0.879 NA NA
d_imagi_1 =~ imagi_t2 1.000 0.685 NA NA
d_imagi_1 ~1 0.669 2.398 0.934 0.350
imagi_t1 ~1 4.610 12.884 140.471 0.000
d_imagi_1 ~~ d_imagi_1 0.075 0.960 2.568 0.010
imagi_t1 ~ frequ 0.141 0.302 2.567 0.010
d_imagi_1 ~ imagi_t1 -0.154 -0.198 -1.006 0.314
d_imagi_1 ~ frequ -0.003 -0.009 -0.069 0.945
frequ ~~ frequ 0.589 1.000 6.052 0.000

The moderation effect of the frequency of self-acceptance behaviors with the imagination change score (ideal-self) is not significantly different from zero, b = -0.003, p = 0.945.

3.9.3 Hyp 7: Effects summary

Run models for all facets with a template & loop:

Show the code
# create df for table:

df_table_hyp7 <- bind_rows(
  #traits
  params_lcs_extra_ideal_specif_hyp7 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_ideal_frequ_hyp7 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_ideal_specif_hyp7 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_ideal_frequ_hyp7 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_ideal_specif_hyp7 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_ideal_frequ_hyp7 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_ideal_specif_hyp7 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_ideal_frequ_hyp7 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_ideal_specif_hyp7 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_ideal_frequ_hyp7 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_ideal_specif_hyp7 %>% filter(term=="d_socia_1 ~ sa07_01_t1"),
  params_lcs_socia_ideal_frequ_hyp7 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_ideal_specif_hyp7 %>% filter(term=="d_asser_1 ~ sa07_02_t1"),
  params_lcs_asser_ideal_frequ_hyp7 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_ideal_specif_hyp7 %>% filter(term=="d_energ_1 ~ sa07_03_t1"),
  params_lcs_energ_ideal_frequ_hyp7 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_ideal_specif_hyp7 %>% filter(term=="d_compa_1 ~ sa07_04_t1"),
  params_lcs_compa_ideal_frequ_hyp7 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_ideal_specif_hyp7 %>% filter(term=="d_respe_1 ~ sa07_05_t1"),
  params_lcs_respe_ideal_frequ_hyp7 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_ideal_specif_hyp7 %>% filter(term=="d_trust_1 ~ sa07_06_t1"),
  params_lcs_trust_ideal_frequ_hyp7 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_ideal_specif_hyp7 %>% filter(term=="d_organ_1 ~ sa07_07_t1"),
  params_lcs_organ_ideal_frequ_hyp7 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_ideal_specif_hyp7 %>% filter(term=="d_produ_1 ~ sa07_08_t1"),
  params_lcs_produ_ideal_frequ_hyp7 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_ideal_specif_hyp7 %>% filter(term=="d_respo_1 ~ sa07_09_t1"),
  params_lcs_respo_ideal_frequ_hyp7 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_ideal_specif_hyp7 %>% filter(term=="d_anxie_1 ~ sa07_10_t1"),
  params_lcs_anxie_ideal_frequ_hyp7 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_ideal_specif_hyp7 %>% filter(term=="d_depre_1 ~ sa07_11_t1"),
  params_lcs_depre_ideal_frequ_hyp7 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_ideal_specif_hyp7 %>% filter(term=="d_volat_1 ~ sa07_12_t1"),
  params_lcs_volat_ideal_frequ_hyp7 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_ideal_specif_hyp7 %>% filter(term=="d_curio_1 ~ sa07_13_t1"),
  params_lcs_curio_ideal_frequ_hyp7 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_ideal_specif_hyp7 %>% filter(term=="d_aesth_1 ~ sa07_14_t1"),
  params_lcs_aesth_ideal_frequ_hyp7 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_ideal_specif_hyp7 %>% filter(term=="d_imagi_1 ~ sa07_15_t1"),
  params_lcs_imagi_ideal_frequ_hyp7 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, estimate, std.all, statistic, p.value)

Results summary across the Big Five traits: trait-specific acceptance goals (goals) and frequency of self-acceptance behaviors (frequency) as moderators on the latent change score

kable(df_table_hyp7[1:10, ], digits = 3)
trait moderator estimate std.all statistic p.value
extraversion goals -0.035 -0.124 -1.110 0.267
extraversion frequency 0.054 0.178 1.977 0.048
agreeableness goals -0.012 -0.027 -0.310 0.756
agreeableness frequency 0.077 0.161 1.800 0.072
conscientiousness goals 0.023 0.095 1.203 0.229
conscientiousness frequency -0.082 -0.236 -2.456 0.014
neuroticism goals -0.062 -0.204 -2.185 0.029
neuroticism frequency 0.049 0.151 1.774 0.076
openness goals -0.001 -0.036 NA NA
openness frequency 0.003 0.160 NA NA

Four moderator effects significantly differ from zero:

  • changes in ideal-level extraversion are moderated by the frequency of self-acceptance behaviors
  • changes in ideal-level conscientiousness are moderated by the frequency of self-acceptance behaviors (but in the unexpected direction)
  • changes in ideal-level neuroticism are moderated by the trait-/facet-level specific acceptance goals
  • models for openness did not converge (?)

Results summary across the Big Five facets: trait-specific acceptance goals (goals) and frequency of self-acceptance behaviors (frequency) as moderators on the latent change score

kable(df_table_hyp7[11:40, ], digits = 3)
trait moderator estimate std.all statistic p.value
sociability goals -0.031 -0.153 -1.197 0.231
sociability frequency 0.005 0.015 0.151 0.880
assertiveness goals -0.013 -0.089 -0.998 0.318
assertiveness frequency 0.059 0.213 1.834 0.067
energy goals 0.013 0.142 1.098 0.272
energy frequency -0.030 -0.173 -1.092 0.275
compassion goals -0.034 -0.115 -1.147 0.251
compassion frequency -0.019 -0.037 -0.242 0.809
respectfulness goals -0.005 -0.026 -0.268 0.789
respectfulness frequency 0.036 0.120 1.003 0.316
trust goals 0.020 0.098 1.064 0.287
trust frequency -0.078 -0.211 -1.695 0.090
organization goals 0.014 0.082 0.910 0.363
organization frequency -0.100 -0.331 -2.504 0.012
productiveness goals 0.002 0.009 0.102 0.918
productiveness frequency -0.070 -0.230 -1.910 0.056
responsibility goals -0.018 -0.067 -0.769 0.442
responsibility frequency 0.075 0.149 1.378 0.168
anxiety goals -0.005 -0.024 -0.199 0.843
anxiety frequency 0.037 0.088 0.638 0.523
depression goals -0.005 -0.052 -0.432 0.666
depression frequency 0.035 0.175 1.418 0.156
volatility goals -0.005 -0.016 -0.192 0.848
volatility frequency -0.087 -0.186 -1.754 0.079
curiosity goals -0.023 -0.142 -1.172 0.241
curiosity frequency 0.020 0.069 0.501 0.616
aesthetic goals -0.003 -0.099 -0.753 0.452
aesthetic frequency 0.012 0.199 0.845 0.398
imagination goals 0.010 0.053 0.559 0.576
imagination frequency -0.003 -0.009 -0.069 0.945

Looking at the facets, we find five moderator effects that significantly differ from zero:

  • The effect for conscientiousness is only represented within the organization facet.
  • No other significant effects.

4 Exploratory results

4.1 a) Differences in change across experimental groups

We will explore a) whether change in psychological well-being indicators as well as the difference between real- and ideal- self will differ across groups at follow-up.

4.2 b) Personal project dimensions

We will explore b) whether extent of change/acceptance is related to personal project dimension variables.

4.3 c) Traits that were selected as change goals

We will explore c) whether there are stronger rates of change/acceptance on traits that were selected as change goals than those that were not.